【问题标题】:Change innerHTML with a parameter [duplicate]使用参数更改 innerHTML [重复]
【发布时间】:2018-06-07 11:02:09
【问题描述】:

我尝试通过将鼠标悬停在段落上来更改它。

HTML

<p id="foo"> Hello world! </p>

Javascript

var foo = document.getElementById("foo");
foo.addEventListener("mouseover", ChangeText("Goodbye world!"));

function ChangeText(s) {
    this.innerHTML = s;
}

然而,该段落在悬停时不会改变。当参数被省略并且字符串像下面这样直接输入时,它确实有效。为什么?

var foo = document.getElementById("foo");
foo.addEventListener("mouseover", ChangeText);

function ChangeText() {
    this.innerHTML = "Goodbye world!";
}

【问题讨论】:

    标签: javascript parameter-passing


    【解决方案1】:

    addEventListener 想要一个函数作为第二个参数;所以,如果你调用一个带参数的函数,你可能会这样写:

    foo.addEventListener("mouseover", function(event){
            ChangeText("Goodbye world!",event.target)
         });
    
    function ChangeText(s,target) {
        target.innerHTML = s;
     }
    

    【讨论】:

    • 不幸的是,这对我也不起作用。
    • this 值不引用foo。您可以更新ChangeText 以设置foo.innerHTML 或使用Function.prototype.call() 调用函数并将this 设置为foo (ChangeText.call(foo, "Goodbye world!"))。
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 2013-05-11
    • 2012-09-09
    • 2015-11-08
    • 2019-05-14
    • 2012-12-07
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多