我有一个函数可以监听复选框的更改。页面加载时,该复选框将被选中或取消选中,具体取决于之前完成的步骤。
我想记录复选框是否更改。如果它被更改,然后再次更改,它将被重置为开始时的值,因此意味着它的值没有变化。
我编写了以下代码来执行此操作。
//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;
}
});
更改函数内的 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;
}
else changed
的起始值为 false,然后满足第一个 if 条件...它将 changed
的值更改为 true
。然后再次检查第二个条件,它将被满足,因为 changed
的值已经被第一个 if
更改,因此第二个 block 也会被调用...因此它否定第一个 block 所做的所有更改。
但看起来可以简化为
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;
});
关于javascript - JQUERY - 函数内的 If 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337362/