javascript 的一个参数传递问题.等待ing,,

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:29:00
<script language="javascript">
var right_ = document.getElementById("zhaop");
var UL = right_.getElementsByTagName("ul");

deljob_f()

function deljob_f () {

for ( i = 0; i < UL.length ; i ++ ) {

var input = document.createElement("input");
input.type = "button"
input.value = "删除"

input.onclick = function () { deljob_(i) }

var LI = document.createElement("LI")
LI.appendChild(input)

UL[i].appendChild (LI)

}

}

function deljob_ (X) {

alert(X)

}

</script>

增加LI 正常 onclick 绑定后 alert(X) 不对 一直都是 UL.length
能解释一下为什么 加载完成后 I = UL.length 呢?

是不是变量的作用域问题? 郁闷了.

在网页加载完之后i的值就是UL.length,因为
for ( i = 0; i < UL.length ; i ++ )循环运行完后结果是i=UL.length啊!因为i>=UL.length的时候不满足循环条件,退出循环。
而不管哪个button的onclick事件都是 function () { deljob_(i) }
所以结果都是alert(i)

可以改成这个样子:
<script language="javascript">
var right_ = document.getElementById("zhaop");
var UL = right_.getElementsByTagName("ul");

deljob_f()

function deljob_f () {

for ( i = 0; i < UL.length ; i ++ ) {

var input = document.createElement("input");
input.type = "button"
input.value = "删除"
input.i=i
input.onclick = function () { alert(this.i) }

var LI = document.createElement("LI")
LI.appendChild(input)

UL[i].appendChild (LI)

}

}

function deljob_ (X) {

alert(X)

}

</script>