注册事件的两种方式为何出现意外效果?

注册事件的两种方式为何出现意外效果?

为什么两种注册事件的方法一个报错一个正常?

给定有隐藏下拉列表的 li 元素,鼠标悬浮时显示下拉列表,移开鼠标时隐藏下拉列表。

两种注册事件的方法:

  • 方法一:
function setfun2(event_n1, event_n2) {
    // 代码略
}
// 分别为 sidebar 的 li 元素和隐藏的下拉列表注册事件
setfun2(sidebarli[0], itemhidden[0]);
setfun2(sidebarli[1], itemhidden[1]);
setfun2(sidebarli[2], itemhidden[2]); 
  • 方法二:
for (let i = 0; i <p><strong>问题:</strong></p><p>方法二报错,提示:"cannot set property 'onmouseover' of undefined at window.onload"。</p><p><strong>原因:</strong></p><p><strong>盲猜:</strong>下标越界。案例 1 只有 0,1,2,而案例 2 可能不止 0,1,2。</p><p><strong>验证:</strong></p><p>打印两个数组发现,它们的长度不相等。因此,在方法二中,当side bar中li元素的数量多于隐藏下拉列表时,就会出现下标越界错误。</p>

以上就是注册事件的两种方式为何出现意外效果?的详细内容,更多请关注其它相关文章!