2011-08-30 71 views
11

我想制作一个页面,其中包含各个网页的表格,每个网页旁边都有复选框。我希望用户能够选择多个网站,然后使用Google栏搜索网站。我有一张桌子,每个单元格都有一个填有复选框的表单。每个单元格都有一个checkall按钮,用于检查该单元格中的所有选项。我想添加一个复选框来选择页面上的所有选项。 (是的,我可以放弃这个选项,但我有点想知道如何访问单元格中的所有框,以便我可以像我想要的那样用谷歌搜索。)这里基本上就是我所拥有的。它checkPage函数内,在这一点javascript选择表格中的所有复选框

<html> 
<head> 
<script type="text/javascript"> 
    function checkAll(checkname, bx) { 
     for (i = 0; i < checkname.length; i++){ 
      checkname[i].checked = bx.checked? true:false; 
     } 
    } 
    function checkPage(bx){ 


     var bxs = document.getElementByTagName ("table").getElementsByTagName ("link"); 

     for(i = 0; i < bxs.length; i++){ 
      bxs[i].checked = bx.checked? true:false; 
     } 
    } 
</script> 


</head> 
<body> 
<input type="checkbox" name="pageCheck" value="yes" onClick="checkPage(this)"><b>Check Page</b> 
<table border="1" name ="table"> 

<tr> 
    <td name ="list00"> 
     <form name ="list00"> 
      <input type="checkbox" name="Check_ctr" value="yes" onClick="checkAll(document.list00.link, this)"><b>Check All</b><dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
     </form> 
    </td> 
    <td><form name ="list01"> 
      <input type="checkbox" name="Check_ctr" value="yes" onClick="checkAll(document.list01.link, this)"><b>Check All</b><dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd>  
     </form></td> 
</tr> 
<tr> 
    <td><form name ="list10"> 
      <input type="checkbox" name="Check_ctr" value="yes" onClick="checkAll(document.list10.link, this)"><b>Check All</b><dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
     </form></td> 
    <td><form name ="list11"> 
      <input type="checkbox" name="Check_ctr" value="yes" onClick="checkAll(document.list11.link, this)"><b>Check All</b><dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
      <input type="checkbox" name="link" value="something.com">something.com<dd> 
     </form></td> 
</tr> 
</table> 

</body> 
</html> 

回答

36
function checkAll(bx) { 
    var cbs = document.getElementsByTagName('input'); 
    for(var i=0; i < cbs.length; i++) { 
    if(cbs[i].type == 'checkbox') { 
     cbs[i].checked = bx.checked; 
    } 
    } 
} 

有功能从您的复选框的onclick属性调用检查所有

<input type="checkbox" onclick="checkAll(this)"> 

编辑我误解了你的问题,我发现你已经在你的代码中尝试过了。在getElement 小号 ByTagName必须是复数,你可能已经typo'd那里,必须由指定的回答上面的

编辑标签:传递主复选框作为参数将允许切换检查/取消选中vol7ron的建议,并已在此答案中进行了适当修改。

问题要求页面上的所有复选框,这样就足够了。

但是,提供控制哪些元素来查找复选框可以通过多种方式实现,太多的细节可以实现,但例子可以是document.getElementById(id).getElementsByTagName,如果所有要控制的复选框都是来自一个元素的分支节点。
否则,您可以遍历另一个标记名称检索/自定义类名称检索,仅举几例。

+1

这一个表示感谢。但为了达到我的目的,我删除了整个if语句并将其替换为 cbs [i] .checked = bx.checked?真假; 使其成为拨动开关 – Bastiat

+0

此代码仅适用于按钮。如果该人取消选中该框,则不会取消选中所有复选框。 – vol7ron

+0

@ vol7ron当我挑选他的时候,你的答案没有起来。是的,这是一个直接的情况答案,如果你注意到我的回应,我更换了代码,使复选框切换。 – Bastiat

0

标签名需要帮助的部分是启动HTML标签如<input位所以.getElementsByTagName ("link")应该.getElementsByTagName ("input"),如果你只希望name='link'然后if(bxs.name =="link") { ... change the checked }

+0

如果OP真的后链接,然后按[文件.links](http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-7068919)集合将是比* getElementsByTagName *更好的选择,因为它只获取链接,而不是A可能是锚点的元素。 – RobG

3

例子:http://jsfiddle.net/vol7ron/kMBcW/

function checkPage(bx){     
    for (var tbls=document.getElementsByTagName("table"), i=tbls.length; i--;) 
     for (var bxs=tbls[i].getElementsByTagName("input"), j=bxs.length; j--;) 
     if (bxs[j].type=="checkbox") 
      bxs[j].checked = bx.checked; 
} 
1

您是否尝试过的jQuery?它正在成为DOM操作的JavaScript标准库(也是使用了stackoverflow)。使用它你可以做$(':checkbox')。prop('checked',true);检查页面上的每个复选框(但您可能只想在表格中检查)。

无论如何,开始使用jQuery,它会让你的生活更轻松快乐,并且会为你节省很多时间。

0

...或者即使你想翻转所有复选框中的相应形式简单:

function checkAll(bx){ 
    var form = bx.form; 
    var ischecked = bx.checked; 
    for (var i = 0; i < form.length; ++i) { 
     if (form[i].type == 'checkbox') { 
      form[i].checked = ischecked; 
     } 
    } 
} 

...

<input type="checkbox" onclick="checkAll(this)">