我正在学习,也许我的问题可以改写或重新措辞。
我的脚本没有做我想做的事情,但这是我的尝试。
<script type="text/javascript">
element = document.getElementById("id");
variable=0;
function loading(){
element.addEventListener("click",function(){
variable=variable+1;
console.log(variable);
});
};
function check(){
if(variable===3){console.log('I am 3');};
};
loading();
check();
</script>
每次点击对象时我应该调用check()吗?或者我应该创建一个监听器来每次调用check()&#39;变量&#39;在改变?还是另一种解决方案?
答案 0 :(得分:2)
从事件处理程序中调用check
:
function loading(){
element.addEventListener("click",function(){
variable=variable+1;
check();
console.log(variable);
});
}
当check
更改时,调用variable
是变量的唯一选项。
如果你想在某些东西的价值发生变化的情况下进行检查,你可以使用对象属性,而不是使用setter:
var obj = (function() {
var value = 0;
return {
get value() {
return value;
},
set value(newValue) {
value = newValue;
if (value == 3) {
console.log("I am 3");
}
}
}
})();
然后:
function loading(){
element.addEventListener("click",function(){
obj.value = obj.value + 1; // Or ++obj.value;
console.log(obj.value);
});
}
每当您更改obj.value
的值时,都会调用setter函数,因此您可以在那里进行检查。
请注意,这是ES5(2009)中添加的一项功能,因此在旧的JavaScript引擎中不存在,例如IE8中的引擎。
其他一些说明:
您的代码正在成为The Horror of Implicit Globals的牺牲品:声明您的变量。
;
不要在功能声明或块的末尾进行操作。只是声明不以块结尾。
一致的缩进有助于提高可读性。
variable = variable + 1;
很好,但您也可以选择更简洁:++variable;
所以:
var element = document.getElementById("id");
var variable = 0;
function loading(){
element.addEventListener("click",function(){
++variable;
console.log(variable);
check();
});
}
function check(){
if (variable===3) {
console.log('I am 3');
}
}
loading();
check();
答案 1 :(得分:0)
你几乎就在那里 - 只是你的支票不需要是一个单独的功能。
var element = document.getElementById("id");
var variable = 0;
function increment(variable) {
variable++;
console.log(variable);
if (variable === 3) {
console.log('I am 3');
}
}
element.addEventListener("click", function(){increment(variable);}, false);
答案 2 :(得分:0)
试试这个:
var element = document.getElementById("id");
var variable = 0;
element.addEventListener("click", function(){
variable += 1;
check();
});
function check(){
// for demo purposes, let's change the button text
element.innerHTML = variable === 3 ? 'I am 3' : 'click';
if(variable === 3)
console.log('I am 3');
};
check();
&#13;
<button id="id">click</button>
&#13;
指针:
使用var
在当前范围内声明新变量。