js 怎么传递一个对象?
如:for(var k=0;k<count;k++){
var aElem = document.createElement('span');
aElem.attachEvent("ondblclick",new Function("d(aElem)"));
}
想给其添加一个事件并将对象传入,但这样传不过去,用function(){}传,又不是当前对象,而是最后一个,哪位同仁也遇到此情况了,是否有好的解决方法?谢谢 --------------------编程问答-------------------- 为什么要new Function?直接写function(){}不行吗? --------------------编程问答-------------------- 不行啊,这样的话传的是最后一个对象。 --------------------编程问答-------------------- 1.根据闭包原理,你在function(){}中可以申明一个变量来赋值,然后对该变量操作;
2.从你的例子看,想在ondblclick中得到激活事件的对象,试试srcElement直接获取对象。 --------------------编程问答-------------------- 经过测试,楼上的第一个方法不可以,还是提示都是“---2”,第二个方法可以,但有谁知道JS的闭包原理呢,传递一个变化的对象?
function as(){
var tb = document.getElementById("tb");
var tbdy = document.createElement('tbody');
var tr,td;
var aElem;
for(var k=0;k<3;k++){
tr = document.createElement('tr');
td = document.createElement('td');
aElem = document.createElement('span');
//new Function("d(aElem)")
aElem.attachEvent("ondblclick",function(){var _this =aElem; d(_this);});
aElem.innerHTML = "---"+k;
td.appendChild(aElem);
tr.appendChild(td);
tbdy.appendChild(tr);
}
tb.appendChild(tbdy);
}
function d(x){
alert(event.srcElement.innerHTML)
alert(x.innerHTML);
} --------------------编程问答-------------------- <html>
<body>
<table id=tb><tr><td>hello</td></tr></table>
</body>
<script>
function as(){
var tb = document.getElementById("tb");
var tbdy = document.createElement('tbody');
var tr,td;
var aElem;
for(var k=0;k<3;k++){
tr = document.createElement('tr');
td = document.createElement('td');
aElem = document.createElement('span');
setEvent(aElem);
aElem.innerHTML = "---"+k;
td.appendChild(aElem);
tr.appendChild(td);
tbdy.appendChild(tr);
}
tb.appendChild(tbdy);
}
function setEvent(aElem) {
aElem.attachEvent("ondblclick",function(){d(aElem);});
}
function d(x){
alert(x.innerHTML);
}
as();
</script>
</html> --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
补充:企业软件 , Lotus