Javascript通过另一个函数将对象传递给函数

时间:2012-12-12 17:46:24

标签: javascript jquery html javascript-events

让我先说明这不是我想要编写函数的方式(内联和劫持),但我必须解决第三方应用程序配置界面,将源代码更改为最终选项

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

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

该函数接受vars事件,并获取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 );
}

但我收到以下错误 - &GT;未捕获的TypeError:对象img100023没有方法'getAttribute'

然而,通过静态分配HTML中的标识符

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

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

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

提前感谢您的任何帮助

1 个答案:

答案 0 :(得分: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