![](/img/trans.png)
[英]Function doesn't work properly inside an `if` statement javascript/jQuery
[英]JQUERY - If statement inside function won't work
我有一个侦听复选框更改的函数。 页面加载后,复选框将被打勾或未打勾,这取决于先前完成的步骤。
我想记录复选框是否被更改。 而且,如果先更改它,然后再更改它,那么它将被重置为开始时的值,因此,它的值没有变化。
我编写了以下代码来做到这一点。
//Checkboxes
var change ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
var nochange ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
var changed=false;
$(".change-event").change(function(){
//alert("checked");
if(changed==false) {
$(this).next(".changed").remove();
$(this).after(change);
changed=true;
}
if(changed==true) {
$(this).next(".changed").remove();
$(this).after(nochange);
changed=false;
}
});
change函数内部的if语句不起作用。 更改功能本身没有问题,因为注释掉的警报可以正常工作。
我也尝试过if(!checked)和if(checked)作为条件,但是它仍然没有用。
帮助表示赞赏。
你需要
if(changed==false) {
$(this).next(".changed").remove();
$(this).after(change);
changed=true;
} else {
$(this).next(".changed").remove();
$(this).after(nochange);
changed=false;
}
否则,在changed
值为false时,如果满足条件,则第一个...它将更改的值changed
为true
。 然后第二个条件检查一遍就很满足了,因为值changed
已经由第一改变if
这样的第二块也将被调用......因此抵消了由第一块所做的所有更改。
但看起来可以简化为
var change = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
var nochange = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
var changed = false;
$(".change-event").change(function () {
$(this).next(".changed").remove();
$(this).after(changed ? nochange : change);
changed = !changed;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.