2013-07-08 287 views
0

我创建了一个有很多复选框的表格,但现在我希望能够使用“通用”复选框。选中所有复选框

像这样:

<tr> 
     <th scope="row">Indice</th> 
     <td><input type="checkbox" id="check1"></td> 
     <td><input type="checkbox" id="check2"></td> 
     <td><input type="checkbox" id="check3"></td> 
     <td><button onclick="check()">Check Checkbox</button> 
      <button onclick="uncheck()">Uncheck Checkbox</button></td> 
</tr> 

嗯,我已经这样做了JavaScript的:

<script> 
function check() 
    { 
    document.getElementById("check1").checked=true 
    document.getElementById("check2").checked=true 
    document.getElementById("check3").checked=true 
    } 
function uncheck() 
    { 
    document.getElementById("check1").checked=false 
    document.getElementById("check2").checked=false 
    document.getElementById("check3").checked=false 
    } 
function selectAll(frmElement, chkElement) { 
    // ... 
} 
document.getElementById("check_all_1").onclick = function() { 
    selectAll(document.wizard_form, this); 
} 
</script> 

到目前为止好......但是在IDEIA是有从一些成果数据库,并没有改变我正在做这个javascript“check3”,“check4”...我应该怎么做?

+0

写一个循环... –

+0

你是什么意思“有一些数据库的结果”?你想从数据库中获取一些数据,并只检查基于这些数据的复选框吗?如果是的话,那么你需要阅读AJAX。 –

+0

嗯,我的意思是我只用代码进行测试,将来我会使用数据库中的数据,比如“mysql select from ... where ... while ...”我真的不知道如何很多检查将在未来(与数据库),所以我不能创建一个“document.getElementById(”check1“)”... ...所有内容... –

回答

1

简单的纯的JavaScript(无库所需的)版本:

function checks(){ 
    var button = this.className.indexOf('uncheckAll') === -1, 
     row = this.parentNode.parentNode, 
     inputs = row.getElementsByTagName('input'); 

    for (var i = 0, len = inputs.length; i < len; i++) { 
     if (inputs[i].type == 'checkbox') { 
      inputs[i].checked = button; 
     } 
    } 

} 

var buttons = document.getElementsByTagName('button'); 
for (var i = 0, len = buttons.length; i < len; i++) { 
    buttons[i].addEventListener('click', checks); 
} 

JS Fiddle demo

上述修正,以避免不必明确遍历DOM(其中,使用顺序parentNode.parentNode ...要求HTML结构的提前知识),使用一个(简单)closest()垫片:

HTMLElement.pro