0

让我在开头说这不是我想要编写函数(内联和劫持)的方式,但我必须围绕第 3 方应用程序配置界面工作,并将更改源代码作为最终选项

所以我有一个调用 onclick 函数的图像

 <img src="images/button_closed.gif" id="img100023" border="0" 
  onclick="OnNodeImageClick(event, this)" href="theurl.cfm">

该函数接受 vars 事件,this 并获取 url

 function OnNodeImageClick(evt, clickedImage) {
    var href = clickedImage.getAttribute("href"); 
  ...

我需要在共享原始 ID 号的单独元素上执行完全相同的逻辑

 <span id="node100023" >External Links</span>

我试过的是这个作为html

 <span id="node100023" 
  onclick="javascript:OverwriteToTreeHandler($(this).attr('id'))">
  External Links</span>

这是我的功能

 function OverwriteToTreeHandler(nodeID){
    var clickedItem = 'img'+nodeID.replace(/[^0-9]/g, '');  
        //tried $('body').find( clickedItem ) didnt work 
     OnNodeImageClick(event, clickedItem );
}

但是我收到以下错误-> Uncaught TypeError: Object img100023 has no method 'getAttribute'

但是通过在 HTML 中静态分配标识符

我尝试过的是 html ,我得到了我想要的结果

 <span id="node100023" 
  onclick="javascript:OnNodeImageClick(event, img100023)">
  External Links</span>

我认为这与参数有关,并且当我尝试动态获取元素时,它没有将其注册为对象,但我没有连接到这是如何完成的

提前感谢您的任何帮助

4

1 回答 1

2

OnNodeImageClick应该是一个 DOM 元素 - 您正在传递一个字符串。试试这个:

function OverwriteToTreeHandler(nodeID) {
    var clickedItem = document.getElementById('img'+nodeID.replace(/[^0-9]/g, ''));

    OnNodeImageClick(event, clickedItem);
}

此外,this.id$(this).attr('id')您调用OverwriteToTreeHandler.

于 2012-12-12T17:53:51.523 回答