尝试使用变量(var checkTrueMrk
)作为标记/状态来确定if条件。
如果“checkTrueMrk
”变量为true,则在按钮上单击,否则if条件不会继续,否则checkTrueMrk将设置为true。但是,重复点击后,checkTrueMrk始终为false。
是否可以这种方式使用变量。我知道它可能是一个对象文字或来自构造函数的对象,我可以创建一个属性,甚至只是函数外部的全局变量集。
编辑**但是为什么在将变量设置为true后,变量在后续点击时默认为“false”?
我的代码:
<button onclick="myFunction()">click</button>
<script>
function myFunction() {
console.log(checkTrueMrk); //undefinied
console.log(typeof checkTrueMrk); //undefined
if (typeof checkTrueMrk == 'undefined' || !checkTrueMrk) {
var checkTrueMrk = false;
}
console.log(checkTrueMrk); //displays false and type of boolean as expected
if(!checkTrueMrk){
console.log("Im not true");
checkTrueMrk = true;
console.log("I am now set to " + checkTrueMrk
+ "and I am type of"
+ typeof checkTrueMrk);
}
}
答案 0 :(得分:0)
您没有在函数外部声明变量,因此它将首次未定义。将var checkTrueMrk = flase;
添加到代码顶部。
答案 1 :(得分:0)
您已经提到过,您需要使用变量作为标志,但不要让它变为全局变量。如果我理解正确,下面使用自动执行匿名函数的方式可能只适合你。
<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Click me</button>
<script>
var myFunction = (function() {
alert("came in");
var checkTrueMrk = false;
return function(){
if(!checkTrueMrk){
alert("I will be called once");
checkTrueMrk = true;
}
};
})();
</script>
</body>
</html>
开启
但是为什么变量默认为&#39; false&#39;在将后续点击设置为true后?
这只是因为在您的实现中,变量在函数范围内。函数调用完成后,内部声明的变量的存在就消失了。