wjg123qwe 2021-10-07 21:03 采纳率: 87.5%
浏览 34
已结题

关于#javascript#的问题:为什么用for of就可以打印出内容


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <button>按钮1</button>
        <button>按钮2</button>
        <script>
            let obj={
                site:"中华人民共和国",
                handleEvent:function(event){
                    console.log(this.site+event.target.innerHTML);
                },
                show:function(){
                    const _this=this;
                    const button=document.querySelectorAll("button");
                    for (const but of button) {
                        but.addEventListener("click",this);
                    }
                }
            }
            obj.show();
        </script>
    </body>
</html>

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/502626116336175.png "=600 #left")


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <button>按钮1</button>
        <button>按钮2</button>
        <script>
            let obj={
                site:"中华人民共和国",
                handleEvent:function(event){
                    console.log(this.site+event.target.innerHTML);
                },
                show:function(){
                    const _this=this;
                    const button=document.querySelectorAll("button");
                    button.forEach(function(elem){
                        elem.addEventListener("click",this);
                    })
                }
            }
            obj.show();
        </script>
    </body>
</html>

img


为什么用for of就可以打印出内容,foreach就不行呢?

  • 写回答

1条回答 默认 最新

  • 永远不会太晚 2021-10-07 23:36
    关注
    button.forEach(elem=>{
                            elem.addEventListener("click",this);
                        })
    

    这样就行了,因为你的写法forEach里是个function(elem){......},function中this指向function本身,可以使用箭头函数,箭头函数中的this指向上一级

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月8日
  • 已采纳回答 10月8日
  • 创建了问题 10月7日

悬赏问题

  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥200 求能开发抖音自动回复卡片的软件
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。