javascript - 这两种说法有什么区别?

标签 javascript onmouseover

     var tr = document.getElementsByTagName('tr');
        tr[0].onmouseover = function(){
          tr[0].style.backgroundColor = '#ccc'; 
        }
        tr[1].onmouseover = function(){
          tr[1].style.backgroundColor = '#ccc'; 
        }
        tr[2].onmouseover = function(){
          tr[2].style.backgroundColor = '#ccc'; 
        }

第一个是正确的,但是当我使用for时如以下代码片段所示循环,我得到“Uncaught TypeError: Cannot read property 'style' of undefined ”。

     var tr = document.getElementsByTagName('tr');
        for(var i=0;i<tr.length;i++){
          tr[i].onmouseover = function(){
            tr[i].style.backgroundColor = '#ccc'; 
          }            
        }

最佳答案

您需要更新

 tr[i].onmouseover = function(){
    tr[i].style.backgroundColor = '#ccc'; 
 }   

 tr[i].onmouseover = function(event){
    event.currentTarget.style.backgroundColor = '#ccc'; 
 }   

问题 - 当您尝试访问事件处理程序中的 tr[i] 时,i 的值已更新为 3,因此发生了错误

关于javascript - 这两种说法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824609/

相关文章:

javascript - 用于 PhantomJS + Highcharts 的 Javascript 中的 PHP

javascript - 如何在 yeoman 上下文中从 `this.prompt` 获取存储的选项?

javascript - 如何在 body 标记之后动态添加 div 到我的页面?

javascript - 每个单词的首字母大写,其余字母小写

javascript - 如何在鼠标悬停时突出显示 div 中的链接

javascript - 如何设置鼠标悬停显示延迟

javascript - 如何影响 onmouseover 事件上的 previousSibling 样式。 CSS 或 JavaScript

javascript - typescript 中有什么方法可以使用对象作为键吗?

jquery - Onmouseover 恢复为原始文本

javascript - CSS 悬停和/或 javascript