OnClick 功能从打开页面开始

OnClick function starting at opening page

提问人:Mat 提问时间:4/15/2022 更新时间:4/15/2022 访问量:282

问:

这听起来可能很愚蠢,但我写了一些代码来将二进制转换为普通数字。我有一个按钮,您必须按下该按钮才能运行整个功能。但是,在不单击按钮的情况下,该功能启动了。

let button = document.getElementById("submit");
let binary;
let result = document.createElement("h1");
result.className = "answer";

button.addEventListener("click", calc());


function calc(){
    binary = document.getElementById("binary").value;
    result.textContent = "The Result is: " + parseInt(binary, 2);
    document.body.appendChild(result);
    console.log('here');
}

当我加载页面时,“结果是”文本已经存在,当我单击它时,它不会控制台记录或更改值。 这可能很愚蠢,但我无法弄清楚 提前致谢。

JavaScript的

评论

2赞 Bao Huynh Lam 4/15/2022
它应该只是 的第二个参数应该是一个 FUNCTION,而不是一个函数调用button.addEventListener("click", calc);addEventListener
2赞 savageGoat 4/15/2022
您在侦听器中调用函数,侦听器需要对该函数的引用,而不是结果。("click", calc)
0赞 Mat 4/15/2022
我习惯了 C++,所以你每次写下函数时都必须把括号放在括号里
1赞 mplungjan 4/15/2022
此外,如果您有表单,请使用 submit 事件而不是按钮单击事件

答:

1赞 Samatar Abdi 4/15/2022 #1

我从您的代码中看到的问题是您在 addEventListener 方法中调用了该函数,相反,您应该这样编写它,您应该传递而不是 .calc()button.addEventListener("click", calc);calccalc()

评论

2赞 Dave Pritlove 4/15/2022
这是正确答案,事件侦听器的第二个参数必须是函数或对函数的引用,而不是对函数的调用(该函数将凭借 invoke 运算符立即执行)())
0赞 Sayan Dasgupta 4/15/2022 #2

使用这个:

let button = document.getElementById("submit");
let binary;
let result = document.createElement("h1");
result.className = "answer";

button.addEventListener("click",(e)=>{
    e.preventDefault();
  calc();
});


function calc(){
    binary = 1000101; // get binary
    result.textContent = "The Result is: " + parseInt(binary, 2);
    document.body.appendChild(result);
    console.log('here');
}
<button id ="submit">
 Submit
</button>
<br>