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

标签 javascript html jquery jquery-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 );
}

但我收到以下错误:

Uncaught TypeError: Object img100023 has no method 'getAttribute'

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

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

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

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

最佳答案

OnNodeImageClick 需要一个 DOM 元素 - 您正在传递一个字符串。试试这个:

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

    OnNodeImageClick(event, clickedItem);
}

此外,当您调用 OverwriteToTreeHandler< 时,this.id$(this).attr('id') 更好(性能和清晰度方面)/.

关于JavaScript 通过另一个函数将对象传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13845591/

相关文章:

javascript - 使用核心 JavaScript 和事件处理程序检查复选框

php - 如何从数据库查询设置html输入字段值

javascript - 多个 document.getElementById

javascript - 如何在嵌套 iframe 所在的原始窗口中打开链接?

javascript - 在表单提交或第一次加载之前预选复选框?

javascript - 如何获取 HTML 元素的原始高度?

javascript - 值不通过 Javascript 传递,而是直接传递给 PHP

javascript - 这个 Javascript 以前可以工作,但现在不行了

javascript - 使用 PHP 上传 PDF 的问题

html - 实际中 HTML 文档的最大深度是多少?