1

我有一个现有的 javascript 函数:

function changeColor(ID){

    try{
        initialize();
    }
    finally{
        changeDesign(ID);
    }

}

我想做这样的事情:

for(var x=0; x<2; x++){
        document.getElementById(x).onclick = "changeColor(" + x +")";
}

带有 html 的输出应该是:

<tr bgcolor="#FFFFFF" id="0" onclick="changeColor(0)>
4

1 回答 1

5

通过 DOM API 分配事件处理程序不会修改实际的 HTML(实际上,浏览器接收的 HTML 源是只读的)。

您必须将函数分配给.onclick,而不是字符串:

for(var x=0; x<2; x++){
    document.getElementById(x).onclick = changeColor;
}

其中changeColor定义为

function changeColor(){
    var ID = this.id; // `this` refers to element the handler is bound to

    try{
        initialize();
    }
    finally{
        changeDesign(ID);
    }

}

我推荐阅读quirksmode.org 上关于事件处理的优秀文章

于 2013-07-04T09:17:24.197 回答