Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绑定onclick-in-JavaScript,而不在HTML文件中直接使用JS_Javascript_Html_Button - Fatal编程技术网

绑定onclick-in-JavaScript,而不在HTML文件中直接使用JS

绑定onclick-in-JavaScript,而不在HTML文件中直接使用JS,javascript,html,button,Javascript,Html,Button,以前,我的HTML文件中有一行: <input type="button" value="1" name="btn1" id="btn1" onclick="showNum(1)" /> 如何绑定btn1以使用JavaScript运行showNum(1)?您需要创建一个新函数,用所需的参数调用showNum() window.onload = function() { document.getElementById("btn1").onclick = function()

以前,我的HTML文件中有一行:

<input type="button" value="1" name="btn1" id="btn1" onclick="showNum(1)" />

如何绑定
btn1
以使用JavaScript运行
showNum(1)

您需要创建一个新函数,用所需的参数调用
showNum()

window.onload = function() {
    document.getElementById("btn1").onclick = function() {showNum(1);};
};
您还可以使用
.bind()
方法绑定参数

window.onload = function() {
    document.getElementById("btn1").onclick = showNum.bind(null, 1);
};


您需要创建一个新函数,用所需的参数调用
showNum()

window.onload = function() {
    document.getElementById("btn1").onclick = function() {showNum(1);};
};
您还可以使用
.bind()
方法绑定参数

window.onload = function() {
    document.getElementById("btn1").onclick = showNum.bind(null, 1);
};

我不能确切地告诉您为什么它是这样工作的,但是如果您使用带有
showNum(1)的匿名函数当分配给onclick时,它可以正常工作

window.onload = function() {
    document.getElementById("btn1").onclick = function () {
        showNum(1);
    }
};
还有一个提示,
window.onload
只能使用一次,因此如果您的站点中有母版页,并且在该页启动时也需要运行脚本,则可以覆盖该母版页。使用像这样的自启动功能,你就不必担心这个问题,你可以拥有你想要的任何数量。此外,它更干净,看起来更好(至少对我来说)

只需确保它在JS代码和HTML的其余部分之后,因为页面是从上到下加载的。

我不能确切地告诉您为什么它会这样工作,但是如果您使用带有
showNum(1)的匿名函数当分配给onclick时,它可以正常工作

window.onload = function() {
    document.getElementById("btn1").onclick = function () {
        showNum(1);
    }
};
window.onload = function() {
    document.getElementById("btn1").addEventListener('click', ()=>showNum(1));
};
还有一个提示,
window.onload
只能使用一次,因此如果您的站点中有母版页,并且在该页启动时也需要运行脚本,则可以覆盖该母版页。使用像这样的自启动功能,你就不必担心这个问题,你可以拥有你想要的任何数量。此外,它更干净,看起来更好(至少对我来说)


只需确保它在JS代码和HTML的其余部分之后,因为页面从上到下加载。

showNum
而不是
showNum(1)

window.onload = function() {
    document.getElementById("btn1").addEventListener('click', ()=>showNum(1));
};
showNum
-是处理程序,但
showNum(1)
-是执行的结果

如果需要参数:
showNum.bind(this,1)

或者更好的方法是使用
addEventListener

showNum
而不是
showNum(1)

showNum
-是处理程序,但
showNum(1)
-是执行的结果

如果需要参数:
showNum.bind(this,1)

或者更好的方法是使用addEventListener:
也可以将引用绑定到函数,如下所示:

var showNum=function(){
警报(该值);
}
window.onload=函数(){
document.getElementById(“btn1”).onclick=showNum;
};

也可以将引用绑定到函数,如下所示:

var showNum=function(){
警报(该值);
}
window.onload=函数(){
document.getElementById(“btn1”).onclick=showNum;
};


但是该方法需要一个参数,我需要传入它。@AaronFranke,如果需要参数:showNum.bind(这个,1);但是该方法使用一个参数,我需要传入它。@AaronFranke,如果需要参数:showNum.bind(这个,1);
bind
的第一个参数做什么?(null)@AaronFranke的第一个参数是
this
,因为我们不关心
this
指向哪里,所以我们传递
null
而不是
bind
的第一个参数做什么?(null)@AaronFranke的第一个参数是
this
,因为我们不关心
this
指向什么地方,所以我们通过
null
代替头尝试使用自启动函数,但它不起作用。但是,第一部分,
=function(){showNum(1);}
是有效的。它是否在HTML之后位于页面底部?页面垂直加载,而自启动函数的缺点是,在调用元素之前,该元素必须存在。我个人对此没有异议,一般来说,将所有脚本放在页面底部是一个很好的做法。哦,它也必须放在HTML下面?我把它放在JS的底部,HTML的顶部。这有点让人扫兴,需要我将我的JS移出
。是否需要将其保留在
中?将JS代码放在页面底部(例如页脚中,或者在正文后浮动)是一种常见的约定,这主要是因为用户会更快地看到页面加载。如果让用户等待DOM通过页眉中的所有JS,则页面加载速度会变慢。我个人认为它对组织也有好处,但至少,你应该尝试在页面上的HTML之后保留JS。我尝试过使用自启动功能,但它不起作用。但是,第一部分,
=function(){showNum(1);}
是有效的。它是否在HTML之后位于页面底部?页面垂直加载,而自启动函数的缺点是,在调用元素之前,该元素必须存在。我个人对此没有异议,一般来说,将所有脚本放在页面底部是一个很好的做法。哦,它也必须放在HTML下面?我把它放在JS的底部,HTML的顶部。这有点让人扫兴,需要我将我的JS移出
。是否需要将其保留在
中?将JS代码放在页面底部(例如页脚中,或者在正文后浮动)是一种常见的约定,这主要是因为用户会更快地看到页面加载。如果让用户等待DOM通过页眉中的所有JS,则页面加载速度会变慢。我个人认为它对组织也有好处,但至少,你应该尝试在页面的HTML之后保留JS。showNum
的参数是否总是与输入的
值相同?是的。你认为有更好的方法吗?是的,请看
showNum
的参数是否总是与输入的
值相同?是的。你认为有什么问题吗