javascript - 在 Javascript 中查找对象

标签 javascript search object

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

<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/

相关文章:

javascript - 将相关数据与 promise 结果相结合

JavaScript 在图像上链接元素

c# - 谷歌喜欢用户搜索时的下拉框

javascript - 将对象数组转换为键为 : value dynamic 的 en 对象

javascript - 在对象 JavaScript 中关联两个键

javascript - 如何从扩展中退出 Chrome?

sql - Postgres 全文搜索 : how to search multiple words in multiple fields?

Python 搜索带有键值的 Json

javascript - 我如何在meteorjs中返回包含函数的对象?

java - 在java中保存新创建的对象