Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript java脚本last iteration为所有迭代设置值 var myElements=document.getElementsByName('bb1'); 对于(var i=0;i_Javascript_Javascript Events - Fatal编程技术网

Javascript java脚本last iteration为所有迭代设置值 var myElements=document.getElementsByName('bb1'); 对于(var i=0;i

Javascript java脚本last iteration为所有迭代设置值 var myElements=document.getElementsByName('bb1'); 对于(var i=0;i,javascript,javascript-events,Javascript,Javascript Events,当鼠标移到每个元素上时,将显示一个常量值(最后一次迭代值),而不是显示CurveValue的不同值 我在这里做错了什么?在JavaScript中的块内没有不同的作用域,因此当触发鼠标悬停事件时,它会提醒上次迭代中设置的当前变量值 您可以在回调函数中使用this,以获取触发事件的对象的属性 var myElements = document.getElementsByName('bb1'); for (var i = 0; i < myElements.length; i++) {

当鼠标移到每个元素上时,将显示一个常量值(最后一次迭代值),而不是显示CurveValue的不同值


我在这里做错了什么?

在JavaScript中的
块内没有不同的作用域,因此当触发鼠标悬停事件时,它会提醒上次迭代中设置的当前变量值

您可以在回调函数中使用
this
,以获取触发事件的对象的属性

var myElements = document.getElementsByName('bb1');
    for (var i = 0; i < myElements.length; i++) {
        var curValue = myElements[i].getAttribute('innerId')
        myElements[i].addEventListener('mouseover', function () {
            alert('Hello i am : ' + curValue);
        }, false);
    }
var myElements=document.getElementsByName('bb1');
对于(var i=0;i
这里的一般问题是Javascript中的闭包问题。当使用回调函数中未定义的变量(在本例中为CurveValue)时,会发生这种情况

我建议阅读关于JS闭包的答案

var myElements = document.getElementsByName('bb1');
for (var i = 0; i < myElements.length; i++) {
    myElements[i].addEventListener('mouseover', function () {
        alert('Hello i am : ' + this.getAttribute('innerId'));
    }, false);
}