让我们说我有一个元素参考获得了...
var x=document.getElementById("ID123");
现在我想在动态创建的html元素ala ...
中包含x的一些功能myWin.document.write("<input type='button' data-doit=????? value='Do It' onclick='window.doit(?????);'/>");
这样函数doit()可以重新创建原始引用x
function doit()
{
var x = ?????;
}
现在我通过获取通过getElementsByTagName找到的x的数字索引并将其作为参数传递给doit()来实现此目的。
有没有办法做到这一点?
答案 0 :(得分:0)
我可能会将x
的ID传递给doit()
,这需要doit()
看起来像这样:
function doit(id) {
var x = document.getElementById(id);
// etc
}
就创建input
元素而言,有两种方法可以做到这一点。这类似于您当前的解决方案(但非标准):
myWin.document.write('<input ... onclick="doit(' + x.id + ');" />');
标准解决方案是使用DOM API创建新的input
元素:
var input = myWin.document.createElement('input');
input.type = 'button';
// other properties
input.onclick = function () {
doit(x.id);
};
// insert new element
document.getElementById("myform").appendChild(input);
(请注意,在这种情况下插入元素会稍微复杂一些 - 您必须以编程方式在DOM中找到它的位置。)
最后,如果你正在使用jQuery,你可以做一些事情:
var input = $('<input type="button" etc />').click(function () {
doit(x.id);
});
$('#myform').append(input);