让我先说明这不是我想要编写函数的方式(内联和劫持),但我必须解决第三方应用程序配置界面,将源代码更改为最终选项
所以我有一个调用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>
我认为这与参数有关系,而且当我尝试动态获取元素时,它没有将其注册为对象,但我没有联系到如何完成
提前感谢您的任何帮助
答案 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
。