javaScript中setAttribute的循环设置

来源:百度知道 编辑:UC知道 时间:2024/09/25 05:34:42
setAttribute在循环中为什么不能设置
function ViewFenPage(json)
{
var divpage = document.getElementById("page");
for(var i=0;i<3;i++)
{
var aint = i + 1;

var aspan = document.createElement("span");
aspan.setAttribute("title",aint);
aspan.setAttribute("onclick",function(){alert(aint);});

divpage.appendChild(aspan);
aspan.innerHTML += "[" + aint + "]";
}
}

为什么我无论单击哪个都弹出来的是3,我想点哪个弹出来的是相应的。
谢谢大虾了!
谢谢,都 很好!

function ViewFenPage(json)
{
var divpage = document.getElementById("page");
for(var i=0; i<3; i++)
{
var aspan = document.createElement("span");
aspan.aint = i + 1;
aspan.setAttribute("title", i + 1);
// 因为这里, 你等于传递的是一个引用类型 要这样做,才行
aspan.setAttribute("onclick",function(){alert(this.aint);});

divpage.appendChild(aspan);
aspan.innerHTML += "[" + aspan.aint + "]";
}
}

加个匿名函数就行了
function ViewFenPage(json)
{
var divpage = document.getElementById("page");
for(var i=0;i<3;i++)
{
(function(i){
var aint = i + 1;

var aspan = document.createElement("span");
aspan.setAttribute("title",aint);
aspan.setAttribute("onclick",function(){alert(aint);});

divpage.appendChild(aspan);
a