Javascript js-变量以获取某个值

Javascript js-变量以获取某个值,javascript,variables,Javascript,Variables,为什么最后一行中的变量i不可访问?或者更精确地说,它取迭代中i的最后一个值+1(这实际上是有意义的)。我希望它的价值与在li_hotel[I]注册活动时的价值相同 for (var i = 0; i < li_hotel.length; i++) { li_hotel[i].addEventListener('click', function(event) { document.querySelector('#content > .left').innerHT

为什么最后一行中的变量i不可访问?或者更精确地说,它取迭代中i的最后一个值+1(这实际上是有意义的)。我希望它的价值与在li_hotel[I]注册活动时的价值相同

for (var i = 0; i < li_hotel.length; i++) {
    li_hotel[i].addEventListener('click', function(event) {
        document.querySelector('#content > .left').innerHTML = this.innerHTML;
        document.querySelector('#content > .right').innerHTML = i;
    })
};
for(变量i=0;i.left').innerHTML=this.innerHTML;
document.querySelector('#content>.right').innerHTML=i;
})
};

谢谢。

因为当代码被命中时,循环就完成了。您需要关闭:

for (var i = 0; i < li_hotel.length; i++) {
    (function(i) {
        li_hotel[i].addEventListener('click', function(event) {
            document.querySelector('#content > .left').innerHTML = this.innerHTML;
            document.querySelector('#content > .right').innerHTML = i;
        })
    })(i)
};
for(变量i=0;i.left').innerHTML=this.innerHTML;
document.querySelector('#content>.right').innerHTML=i;
})
})(一)
};

这里有另一种方法,可能有些不寻常:您可以从构造函数构建函数,它允许您将
i
连接到主体字符串中

警告:堆栈溢出的语法突出显示不符合任务要求

var li_hotel=document.queryselectoral(“#hotel>li”);
对于(变量i=0;i.left\')。innerHTML=this.innerHTML\
document.querySelector(\'#content>.right\')。innerHTML='+i+'\
';
李宇大酒店[i]。添加事件列表('click',新功能('event',body));
};
  • 1号酒店
  • 2号酒店
  • 3号酒店

也许可以添加一个片段来说明问题所在?闭包!总有一天我会理解它们的——谢谢——它会按预期工作的。谢谢。我需要最终对闭包有信心。不准逃跑:)