我有一组复选框(id ="第一个" id ="第二个")和主复选框(id =" main")。
var twitchStats = {
'6': { stream: { twitch: [Object] } },
'7': { stream: { twitch: [Object] } },
'8': { stream: { twitch: [Object] } },
'9': { stream: { twitch: [Object] } },
'10': { stream: { twitch: [Object] } },
'11': { stream: { twitch: [Object] } }
};
process(twitchStats).then(result => {
// ...
});
如果选中了一个或多个组复选框,则主要具有不确定条件。如果全部选中,则主复选框也已检查条件。
<input type='checkbox' id="main_button" onclick="Indeterminate()"><label for="main_button">Main checkbox of group</label>
<input type='checkbox' id="first" onclick="Indeterminate()"><label for="first">First thing</label>
<input type='checkbox' id="second" onclick="Indeterminate()"><label for="second">Second thing</label>
在我的IF ELSE语句中,条件IF和ELSE有效,但ELSE IF有问题。可能做一个简单的错误或?谢谢!
答案 0 :(得分:2)
var main = document.getElementById('main_button');
var first = document.getElementById('first');
var second = document.getElementById('second');
function Indeterminate() {
if (first.checked && second.checked) {
main.checked = true;
main.indeterminate = false;
} else if (first.checked || second.checked)
main.indeterminate = true;
else
main.indeterminate = false;
}
<input type='checkbox' id="main_button" onclick="Indeterminate()">
<label for="main_button">Main checkbox of group</label>
<input type='checkbox' id="first" onclick="Indeterminate()">
<label for="first">First thing</label>
<input type='checkbox' id="second" onclick="Indeterminate()">
<label for="second">Second thing</label>
答案 1 :(得分:1)
你的&amp;&amp;代码是对的,但它是&amp;&amp;情况是你的一部分||代码,所以当||不是真的,&amp;&amp;也不会是真的。只需改变他们的顺序。
答案 2 :(得分:0)
如前所述,您应该在&&
之前移动||
。
原因是如果选择第一个或两者都被选中,first.checked || second.checked
将始终为真。只有||
失败的情况是两者都未选中,然后&&
也会失败。
更新代码
function Indeterminate() {
var first = document.getElementById('first').checked;
var second = document.getElementById('second').checked
var main = document.getElementById('main_button');
if (first && second) {
main.indeterminate = false;
main.checked = true
} else {
main.checked = main.indeterminate = first || second
}
}
&#13;
<input type='checkbox' id="main_button" onclick="Indeterminate()">
<label for="main_button">Main checkbox of group</label>
<br>
<input type='checkbox' id="first" onclick="Indeterminate()">
<label for="first">First thing</label>
<br>
<input type='checkbox' id="second" onclick="Indeterminate()">
<label for="second">Second thing</label>
&#13;
由Bekim Bacaj评论,我已更新了我的代码。 JSFiddle
答案 3 :(得分:0)
我认为问题是你得到||
错误的含义。这意味着or
左右表达式为真 - 或两者!
因此,您的else if
永远不会被调用,因为如果a.checked && b.checked
为真,那么a.checked || b.checked
也将一直为真,if
将在之前执行else if
甚至被检查。
因此,正确的解决方案是:
function Indeterminate() {
if (document.getElementById('first').checked && document.getElementById('second').checked) {
document.getElementById('main_button').checked;
} else if (document.getElementById('first').checked || document.getElementById('second').checked) {
document.getElementById('main_button').indeterminate = true;
} else {
document.getElementById('main_button').indeterminate = false;
}
}
在这里,您首先检查更具体的条件a.checked && b.checked
。只有当该条件不成立时,才会评估较弱的条件a.checked || b.checked
。