绑定onclick-in-JavaScript,而不在HTML文件中直接使用JS
以前,我的HTML文件中有一行:绑定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()
<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
的参数是否总是与输入的值相同?是的。你认为有什么问题吗