通过动态创建的html传递元素引用

时间:2010-09-08 03:17:20

标签: javascript

让我们说我有一个元素参考获得了...

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()来实现此目的。

有没有办法做到这一点?

1 个答案:

答案 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);