使用事件处理程序时出现全局变量问题(基本Javascript)
最近,我在使用DOM事件处理程序时遇到了一个问题。接下来,我将描述与问题相关的内容: 代码使用事件处理程序时出现全局变量问题(基本Javascript),javascript,Javascript,最近,我在使用DOM事件处理程序时遇到了一个问题。接下来,我将描述与问题相关的内容: 代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <form > <input id="b1" type="submit" v
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<form >
<input id="b1" type="submit" value="Click" />
</form>
<script>
//global variable
var v= 0;
var b1= document.getElementById("b1");
b1.addEventListener("click", f1, false);
function f1() {
window.alert(++v);
}
</script>
</body>
</html>
//全局变量
var v=0;
var b1=document.getElementById(“b1”);
b1.addEventListener(“单击”,f1,false);
函数f1(){
窗口报警(++v);
}
代码应该如何工作?
当按下按钮(b1)时,全局变量(v)会在每次单击按钮时逐渐增加其值。窗口将警告新值
问题:
变量没有保留它的最新值。例如,当我单击按钮两次时,窗口应该警告2,但我仍然得到1
断言:
- 全局变量(v)应该将对它所做的更改保存在函数中。这是因为我直接在函数中使用它,而不使用参数
- 当我在代码上直接调用函数两次时,它工作正常(而不是处理程序) f1()//一, f1()//二,
- 我已经用Chrome和Firefox对它进行了测试
希望你们能帮助我!谢谢 您需要在submit处理程序上添加一个表单,以取消提交。正在重置该值,因为页面已重新加载
<form onsubmit="return false;">
<input id="b1" type="submit" value="Click" />
</form>
您需要在submit处理程序中添加一个表单来取消提交。正在重置该值,因为页面已重新加载
<form onsubmit="return false;">
<input id="b1" type="submit" value="Click" />
</form>
您需要在submit处理程序中添加一个表单来取消提交。正在重置该值,因为页面已重新加载
<form onsubmit="return false;">
<input id="b1" type="submit" value="Click" />
</form>
您需要在submit处理程序中添加一个表单来取消提交。正在重置该值,因为页面已重新加载
<form onsubmit="return false;">
<input id="b1" type="submit" value="Click" />
</form>
此问题是“提交”按钮正在提交表单,很可能导致页面刷新并将
v
重置为0。您可以使用传递给回调函数的事件对象上的preventDefault
方法来防止这种行为:
//global variable
var v= 0;
var b1 = document.getElementById("b1");
b1.addEventListener("click", f1, false);
// e is the event object
function f1(e) {
// calling preventDefault will prevent the form from being submitted
e.preventDefault();
console.log("b1 click", ++v)
}
只是一个文体注释,使用
++v
会让人困惑。您最好使用v+=1
此问题是提交按钮正在提交表单,很可能导致页面刷新并将v
重置为0。您可以使用传递给回调函数的事件对象上的preventDefault
方法来防止这种行为:
//global variable
var v= 0;
var b1 = document.getElementById("b1");
b1.addEventListener("click", f1, false);
// e is the event object
function f1(e) {
// calling preventDefault will prevent the form from being submitted
e.preventDefault();
console.log("b1 click", ++v)
}
只是一个文体注释,使用
++v
会让人困惑。您最好使用v+=1
此问题是提交按钮正在提交表单,很可能导致页面刷新并将v
重置为0。您可以使用传递给回调函数的事件对象上的preventDefault
方法来防止这种行为:
//global variable
var v= 0;
var b1 = document.getElementById("b1");
b1.addEventListener("click", f1, false);
// e is the event object
function f1(e) {
// calling preventDefault will prevent the form from being submitted
e.preventDefault();
console.log("b1 click", ++v)
}
只是一个文体注释,使用
++v
会让人困惑。您最好使用v+=1
此问题是提交按钮正在提交表单,很可能导致页面刷新并将v
重置为0。您可以使用传递给回调函数的事件对象上的preventDefault
方法来防止这种行为:
//global variable
var v= 0;
var b1 = document.getElementById("b1");
b1.addEventListener("click", f1, false);
// e is the event object
function f1(e) {
// calling preventDefault will prevent the form from being submitted
e.preventDefault();
console.log("b1 click", ++v)
}
只是一个文体注释,使用
++v
会让人困惑。您最好使用v+=1
如前所述,您会看到这种行为,因为单击按钮会提交表单并重新加载页面
最简单的解决方案是删除
元素。正如已经建立的那样,您会看到这种行为,因为单击按钮提交表单并重新加载页面
最简单的解决方案是删除
元素。正如已经建立的那样,您会看到这种行为,因为单击按钮提交表单并重新加载页面
最简单的解决方案是删除
元素。正如已经建立的那样,您会看到这种行为,因为单击按钮提交表单并重新加载页面
最简单的解决方案是删除
元素。将JavaScript事件处理程序直接放在HTML中不是好的做法。将JavaScript事件处理程序直接放在HTML中不是好的做法。将JavaScript事件处理程序直接放在HTML中不是好的做法。将JavaScript事件处理程序放在HTML中不是好的做法直接在HTML中使用处理程序。@torazaburo:函数声明被挂起。@torazaburo:函数声明被挂起。@torazaburo:函数声明被挂起。@torazaburo:函数声明被挂起。