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

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();


我已经测试过for循环是否正常运行,并尝试以我所知道的所有方式确定问题出在哪里。我什至在看我前段时间从一本书中摘录的一个示例,并且无法理解为什么scrns[i]是不确定的。

任何帮助,不胜感激!

最佳答案

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

for (var i=0; i<=scrns.length; i++) {


至:

for (var i=0; i < scrns.length; i++) {

09-29 23:08