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 呢?
是不是变量的作用域问题? 郁闷了.
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>