为了账号安全,请及时绑定邮箱和手机立即绑定

关于JavaScript中“this”中的问题

关于JavaScript中“this”中的问题

慕田峪4524236 2018-10-11 14:15:14
.为什么将以下代码中this,用sui[a]替换时,运行不出效果;.代码如下<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        .car{            background: #1dacbe;        }    </style></head><body><button>按钮</button><button>按钮</button><button>按钮</button><button>按钮</button><button>按钮</button></body></html><script>var sui=document.getElementsByTagName("button");for(var a=0;a<sui.length;a++){    sui[a].onclick=function () {        for(var b=0;b<sui.length;b++){            sui[b].className=""        }        this.className="car"    }}</script>
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

写个详细一点的- -


    for (var a = 0; a < sui.length; a++) {

        sui[a].index = a; //将当前循环的a值保存为当前按钮的index

        sui[a].onclick = function() {

            for (var b = 0; b < sui.length; b++) {

                sui[b].className = '';

            }

            cosole.log(a);

            sui[this.index].className = 'car';

        };

    }

console.log(a);你就会发现,a返回的都是最后循环结束的值,你这里就是5,然后你只有5个按钮,就是01234...所以代码无效。

sui[a].index = a可将每个循环的a的值存储到index,然后使用this.index调用,所以应该是sui[this.index]

或者你把最外层的for的var改为let也行,这个写tab选项卡、轮播的控件的时候你都会用得到。

最后你的问题,this是什么?

            if (sui[this.index] === this) {
                console.log('true');
            }


查看完整回答
反对 回复 2018-11-30
  • 1 回答
  • 0 关注
  • 446 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号