首页 > 解决方案 > 为什么我的 javascript 函数没有被新的函数替换?

问题描述

我想更改单击按钮后要调用的javascript函数,但它仍然是被调用的旧函数。

第一次点击时调用的函数:longueur()

第二次点击时调用的函数:tester()

html代码:

<input id="entree" type="text" name="longueur" value="" /> 

<input id="bouton" type="submit" value="longueur du mot" onclick="longueur()" />

javascript:

function longueur() {
    let entree = document.getElementById("entree") ;
    let bouton = document.getElementById("bouton") ;
    ... 
    ...
    ...
    entree.name = "lettre" ;
    bouton.value = "Nouvelle lettre" ;


    bouton.onclick = "tester()" ;   

}

为什么在第二次点击时仍然调用 longueur() ?

标签: javascript

解决方案


.onclick属性期望接收一个,而不是您使用字符串设置它。检查下一个显示正确用法的示例:function "tester()"

function longueur()
{
    console.log("longueur called!")
    let bouton = document.getElementById("bouton") ;
    bouton.value = "Nouvelle lettre" ;
    bouton.onclick = tester;
}

function tester()
{
    console.log("tester called!");
}
.as-console {background-color:black !important; color:lime;}
<input id="entree" type="text" name="longueur" value=""/> 
<input id="bouton" type="submit" value="longueur du mot" onclick="longueur()"/>

在您需要将参数传递给tester()方法的特殊情况下,您可以像下一个示例一样继续,该示例使用匿名函数表达式

let arg1 = <some_value>;
let arg2 = <some_value>;
...
bouton.onclick = function() { tester(arg1, arg2); };

推荐阅读