gpt4 book ai didi

javascript - 在 Javascript 中查找对象

转载 作者:行者123 更新时间:2023-11-30 07:01:35 24 4
gpt4 key购买 nike

我有一个包含数千个复选框的表单,选中一个复选框后,我想选中它下面的所有复选框。这有效:

<html>
<body>
<form name="myform">
<input type="checkbox" name="box1" onClick="redrawboxes(this);">1<br>
<input type="checkbox" name="box2" onClick="redrawboxes(this);">2<br>
...
</form>
</body>
</html>
<script>
function redrawboxes(obj){
//check all boxes below
var foundit=false;
for (e=0; e<document.myform.elements.length; e++){
if (foundit==false){ //search for checked obj
if(obj == document.myform.elements[e]){
foundit=true;
}
}else{ //continuing below checked box
if(obj.checked){ //are we checking or unchecking
document.myform.elements[e].checked = true;
}else{
document.myform.elements[e].checked = false;
}
}
}
}
</script>

但对于超过几千个框,IE 慢得令人无法接受。 (Firefox 工作正常。)除了遍历整个列表之外,是否有更好的方法来找到原始框?

最佳答案

这两个 jQuery 建议都非常好。对于像这样的 DOM 争论,你最好使用一个好的库。

关于在表单上放置数千个复选框的可疑智慧的评论也很不错......

但是,如果您确实有充分的理由这样做,并且您不能使用 jQuery 或类似工具,那么这里有一个快速、直接的 JS 方法:

function redrawboxes(obj)
{
//check all boxes below
var next = obj;
while ( (next = next.nextSibling) )
{
if ( next.nodeName.toLowerCase() == "input"
&& next.type.toLowerCase() == "checkbox" )
next.checked = obj.checked;
}
}

已在 FF3、FF3.1、IE6、Chrome 1、Chromium 2 中测试

关于javascript - 在 Javascript 中查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/504899/

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