javascript - 抄大神的代码练手,为什么没有反应呢?
巴扎黑
巴扎黑 2017-04-11 11:16:30
[JavaScript讨论组]




Title











window.onload=function() {

var abtn = document.getElementsByTagName("input");
var op = document.getElementById("inner");
var astyle = ["width", "height", "backgroundColor", "display", "display"];
var avalue = ["200px", "200px", "red", "none", "block"]
function changeStyle(obj, attr, value) {
    obj.style[attr] = value;
};
/* for (var i = 0; i < abtn.length; i++) {
    abtn[i].onclick = (function (i) {
             console.log(i);//检查了下i的值都能依次取到。
            i== abtn.length - 1 && (op.style.cssText = "");
            changeStyle(op, astyle[i], avalue[i]);
    })(i)
}*/
}

模仿大神(http://fgm.cc/learn/lesson1/01.html)的代码做练习,结果我抄都没抄成功,请问是什么原因呢?
巴扎黑
巴扎黑

全部回复(2)
大家讲道理

因为你给btn赋的事件处理函数是函数的返回值,而你的返回值是空值,也就是说事件处理函数都是空的,自然就没有效果。

 abtn[i].onclick = (function (i) {
                    console.log(i);//检查了下i的值都能依次取到。
                    return function() {
                        i == abtn.length - 1 && (op.style.cssText = "");
                        changeStyle(op, astyle[i], avalue[i]);
                    }
                    
            })(i)
天蓬老师
  /* for (var i = 0; i < abtn.length; i++) {
        (function(i){
            abtn[i].onclick = function (i) {
                 console.log(i);//检查了下i的值都能依次取到。
                i== abtn.length - 1 && (op.style.cssText = "");
                changeStyle(op, astyle[i], avalue[i]);
            }
        })(i)
    }*/
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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