最近我在使用DOM事件处理程序时遇到了问题。接下来i'll描述该问题相关的东西:使用事件处理程序时发生全局变量问题(基本Javascript)
代码
<!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>
如何代码应工作?
当按钮(b1)被按下时,全局变量(v)会逐渐增加其值,每次新按钮点击一次。窗口将提醒新值。
问题:
变量犯规保留其最新值。例如,当我点击两次按钮,窗口应提醒2,而是即时通讯仍然获得1
断言:
- 全局变量(v)应该保持做给它的功能。本里面的变化是由于直接使用它的功能IM的事实,没有使用一rgument。
注:
当我直接两次上的代码调用函数它的工作原理(代替处理)正确。
F1(); // 1个
F1(); // 2
从来就用铬和Firefox进行了测试。
那么,这里发生了什么?为什么它不能正常工作?事件处理函数与全局变量的工作方式不同吗?
希望你们能帮助我!谢谢!
@torazaburo:函数声明被挂起。 – 2014-10-04 07:55:48