Javascript::this.value在for循环中工作不正常?
我的代码将很好地说明我将要实现的目标,但只是为了澄清 我想在长按后返回输入值(鼠标向下移动200毫秒) 它在for循环外工作得很好,但在for循环内似乎没有 对于Javascript::this.value在for循环中工作不正常?,javascript,arrays,this,settimeout,onmousedown,Javascript,Arrays,This,Settimeout,Onmousedown,我的代码将很好地说明我将要实现的目标,但只是为了澄清 我想在长按后返回输入值(鼠标向下移动200毫秒) 它在for循环外工作得很好,但在for循环内似乎没有 对于this.value它返回未定义,对于gangina[i].value它不返回任何内容 以下是JSFIDLE: 这是我的密码: <input type=button value=1> <input type=button value=2> <script> var hezi; var gangi
this.value
它返回未定义,对于gangina[i].value
它不返回任何内容
以下是JSFIDLE:
这是我的密码:
<input type=button value=1>
<input type=button value=2>
<script>
var hezi;
var gangina=document.getElementsByTagName("input");
alert(gangina[1].value); //THIS IS OK! :)
for(i=0;i<gangina.length;i++)
{
gangina[i].onmousedown=function()
{
hezi=setTimeout
(
function()
{
alert('this = '+this.value); // = undefined
alert('gangina['+i+'] = '+gangina[i].value); // = nothing
},200
);
}
}
</script>
瓦尔·赫孜;
var gangina=document.getElementsByTagName(“输入”);
警报(gangina[1]。值)//这没关系!:)
对于(i=0;i
您可能需要将函数包装在iLife中,这将绑定i
值
由于内部mousedown事件处理程序将在某个点执行,因此它将只记住i
的最后一个值。请注意,这里您也忘了在i前面提到var
如果您想为i
分配正确的值,最好将内部函数包装在IIFE函数中,因为此时事件处理程序将引用局部作用域的i
。因此它将始终记住i
的正确值
for(var i=0;i<gangina.length;i++)
{
(function(i) {
gangina[i].onmousedown=function()
{
var that = this;
hezi=setTimeout
(
function()
{
alert('this = '+that.value); // = undefined
alert('gangina['+i+'] = '+gangina[i].value); // = nothing
},200
);
}
})(i);
}
for(var i=0;i)你能像这样在for循环中声明i变量吗?for(var i=0;i)谢谢!