gpt4 book ai didi

javascript - 单击事件监听器的问题

转载 作者:行者123 更新时间:2023-11-30 21:12:51 24 4
gpt4 key购买 nike

我找到了一个示例任务,当您单击文档中的任意位置时,它会在页面上显示警报。在任务中,您只需编辑 display() 函数,它有两个参数 - myFunc 和 myObj,以便显示人员对象的名称。我想出了类似的方法,但警报仅在页面刷新后出现,而不是在每次单击文档后出现。

function start() {
var person = {
        name : "John"
    };
    function alertName() {
        alert(""+this.name.toUpperCase() + "");
    }
    document.addEventListener('click', display(alertName, person));
}
function display(myFunc, myObj) {
name = myObj.name;
myFunc();

}
start();

这是 fiddle :

function start() {
var person = {
        name : "John"
    };
    function alertName() {
        alert(""+this.name.toUpperCase() + "");
    }
    document.addEventListener('click', start(alertName, person));
}
function display(myFunc, myObj) {
name = myObj.name;
myFunc();

}
start();
body {
background-color:yellow;
}
  <body>

</body>

最佳答案

这里的问题在于 addEventListener 的第二个参数需要是事件触发时要调用的函数。

在您的示例中,您传递了指令而不是函数。您可以做的是在函数体内添加 display() 调用,并将该函数作为第二个参数传递:

function start() {
var person = {
        name : "John"
    };
    function alertName() {
        alert(""+this.name.toUpperCase() + "");
    }
    document.addEventListener('click', function() {
display(alertName, person)
});
}
function display(myFunc, myObj) {
name = myObj.name;
myFunc();

}
start();

关于javascript - 单击事件监听器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com