javascript在数组中发出未定义的变量

fra*_*ank 1 javascript arrays undefined-reference

有人可以告诉我这段代码有什么问题吗?scrns[i]虽然Chrome仍然在鼠标悬停时运行代码,但Chrome和Firefox都表示未定义.

function nextPrev() {
  if (!document.getElementsByClassName) return false;
  var scrns = document.getElementsByClassName('scrn');
  for (var i=0; i<=scrns.length; i++) {
    // console.log(i);
    scrns[i].onmouseover = function() {
      // console.log('foo');
    }
  }
}
window.onload = nextPrev();
Run Code Online (Sandbox Code Playgroud)

我已经测试了for循环是否正常工作,并试图以我知道的各种方式确定问题的来源.我甚至看了一下我前一本书中的一个例子,并且无法理解为什么scrns[i]不定义.

任何帮助非常感谢!

min*_*dia 5

你循环太远了.如果i等于scrns.length那么它超出了数组的末尾.删除=你的停止条件:

for (var i=0; i < scrns.length; i++) {
Run Code Online (Sandbox Code Playgroud)


Rya*_*n P 5

<=循环时你正在使用.但请记住,数组从0开始索引,而不是1.因此,包含10个元素的数组的长度为10,但元素为0-9.更改以下内容:

for (var i=0; i<=scrns.length; i++) {
Run Code Online (Sandbox Code Playgroud)

至:

for (var i=0; i < scrns.length; i++) {
Run Code Online (Sandbox Code Playgroud)