javascript - 请看下这段代码的问题
PHPz
PHPz 2017-04-11 12:56:55
[JavaScript讨论组]

问题可能很低端。。

   // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
         
    var trs = document.getElementsByTagName("tr");
    for(var i = 0;i < trs.length;i++){
        function changeColor(trs[i]){
            trs[i].onmouseover = function(){
                trs[i].style.backgroundColor = 'grey';
            }
            trs[i].onmouseout = function(){
                trs[i].style.backgroundColor = 'white';
            }
        }
    }

PHPz
PHPz

学习是最好的投资!

全部回复(7)
天蓬老师

其实只是你写错了代码而已:

var trs = document.getElementsByTagName("tr");
for(var i = 0;i < trs.length;i++){
    (function changeColor(tr){
        tr.onmouseover = function(){
            tr.style.backgroundColor = 'grey';
        }
        tr.onmouseout = function(){
            tr.style.backgroundColor = 'white';
        }
    })(trs[i]);
}
ringa_lee

正解如楼上,谁让你在循环内定义函数的……

高洛峰

function changeColor(trs[i]){}放到for外面,参数trs[i]换一下,for里面用changeColor(trs[i]);或许可以吧。
刚试了一下,for里可以定义函数,你的问题是"function changeColor(trs[i]){}",定义函数参数时你用了一个“trs[i]”,这样是不行的。

PHP中文网

var trs = document.getElementsByTagName("tr");

for(var i = 0;i < trs.length;i++){       
        trs[i].onmouseover = function(){
            this.style.backgroundColor = 'grey';
        }
        trs[i].onmouseout = function(){
            this.style.backgroundColor = 'white';
        }       
}
ringa_lee

你没有让里面的函数执行,(function (data) {})(data);这样让函数自执行。要么就在外边写上你想定义的函数,然后在里面引用也可以。

PHP中文网

建议你这种事情,完全可以用css实现,用js实现太大材小用了

tr{//默认样式
background:white;
}
tr:hover{//鼠标经过样式
background:grey;
}
PHP中文网

for(var i = 0;i < trs.length;i++){ ===》 for(var i = 0,len=trs.length;i < len;i++){

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号