gpt4 book ai didi

Javascript 根据 id 选中/取消选中复选框

转载 作者:搜寻专家 更新时间:2023-11-01 04:09:42 24 4
gpt4 key购买 nike

我有很多服务器输入复选框。我已经为第一个复选框指定了 id all。默认情况下它将被选中。当用户选中其他复选框时,id 为 all 的复选框将被取消选中。如果 all 被选中,其他复选框将被取消选中。为此,我编写了代码,但没有任何反应。

这是我尝试过的。

<form>
<input type="checkbox" id="all" value="all" name="all" onChange="check()" checked/>ALL <br/>
<input type="checkbox" id="servers" value="xampp" name="server[]" onChange="check()" />XAMPP <br/>
<input type="checkbox" id="servers" value="wamp" name="server[]" onChange="check()" />WAMP <br/>
<input type="checkbox" id="servers" value="mamp" name="server[]" onChange="check()" />MAMP <br/>
<input type="checkbox" id="servers" value="amp" name="server[]" onChange="check()" />AMP <br/>
</form>


function check(){
var all = document.getElementById("all"),
group = document.getElementById("servers");
if(all.checked == true){
group.checked == false;
}elseif(group.checked == true){
all.checked == false;
}
}

我希望我的代码像 THIS 一样工作.

出于某些原因我不想使用 jQuery。所以我需要我的代码是纯 JS。

我们将不胜感激。

最佳答案

您不能在多个元素上使用相同的 ID。

试试这个,注意我是如何将复选框放在 div

中的

它在这里工作:http://jsfiddle.net/Sa2d3/

HTML:

<form>
<div id="checkboxes">
<input type="checkbox" id="all" value="all" name="all" onChange="check()" />ALL <br/>
<input type="checkbox" value="xampp" name="server[]" onChange="check()" />XAMPP <br/>
<input type="checkbox" value="wamp" name="server[]" onChange="check()" />WAMP <br/>
<input type="checkbox" value="mamp" name="server[]" onChange="check()" />MAMP <br/>
<input type="checkbox" value="amp" name="server[]" onChange="check()" />AMP <br/>
</div>
</form>

JavaScript:

document.getElementById('checkboxes').addEventListener('change', function(e) {
var el = e.target;
var inputs = document.getElementById('checkboxes').getElementsByTagName('input');

// If 'all' was clicked
if (el.id === 'all') {

// loop through all the inputs, skipping the first one
for (var i = 1, input; input = inputs[i++]; ) {

// Set each input's value to 'all'.
input.checked = el.checked;
}
}

// We need to check if all checkboxes have been checked
else {
var numChecked = 0;

for (var i = 1, input; input = inputs[i++]; ) {
if (input.checked) {
numChecked++;
}
}

// If all checkboxes have been checked, then check 'all' as well
inputs[0].checked = numChecked === inputs.length - 1;
}
}, false);

编辑:

根据您在此处评论中的要求,更新了 javascript: http://jsfiddle.net/T5Pm7/

document.getElementById('checkboxes').addEventListener('change', function(e) {
var el = e.target;
var inputs = document.getElementById('checkboxes').getElementsByTagName('input');

// If 'all' was clicked
if (el.id === 'all') {

// If 'all' is checked
if (el.checked) {

// Loop through the other inputs and removed the check
for (var i = 1, input; input = inputs[i++]; ) {
input.checked = false;
}
}
}

// If another has been clicked, remove the check from 'all'
else {
inputs[0].checked = false;
}
}, false);

关于Javascript 根据 id 选中/取消选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com