Javascript 选择所有复选框-但仅选择具有相同表格单元格值的复选框

Javascript 选择所有复选框-但仅选择具有相同表格单元格值的复选框,javascript,Javascript,希望我能解释这一点而不会使问题过于复杂,所以请耐心听我说。我已经知道如何编写一些JavaScript来选择表单中的所有复选框,但是您将如何执行以下操作 代码如下: <tr> <td> <input type="checkbox" name="array[]" value="value1"/> </td> <td> Some Field </td> <

希望我能解释这一点而不会使问题过于复杂,所以请耐心听我说。我已经知道如何编写一些JavaScript来选择表单中的所有复选框,但是您将如何执行以下操作

代码如下:

<tr>
    <td>
        <input type="checkbox" name="array[]" value="value1"/>
    </td>
    <td>
        Some Field
    </td>
    <td>
        Bob
    </td>
</tr>
<tr>
    <td>
        <input type="checkbox" name="array[]" value="value2"/>
    </td>
    <td>
        Some Field
    </td>
    <td>
        Bob
    </td>
</tr>
<tr>
    <td>
        <input type="checkbox" name="array[]" value="value3"/>
    </td>
    <td>
        Some Field
    </td>
    <td>
        Fred
    </td>
</tr>
<tr>
    <td>
        <input type="checkbox" name="array[]" value="value4"/>
    </td>
    <td>
        Some Field
    </td>
    <td>
        Jack
    </td>
</tr>

某个领域
上下快速移动
某个领域
上下快速移动
某个领域
弗莱德
某个领域
杰克
我希望能够选择/取消选择与“Bob”相关的所有复选框,但不能选择Jack或Fred。公共数据必须包含在TD元素中。这可能吗

如果有人能帮忙,那就太好了

非常感谢您的回复subhaze,但我没有太多的运气让它工作,以下是我的代码:

function selectBOB() {
    var trs = document.getElementsByTagName('tr');
    for( var i = 0; i < trs.length; i++ ) {
        var tds = trs[i].getElementsByTagName('td');
        for( var k = 0; k < tds.length; k++ ) {
            if( tds[k].innerText == 'Bob' ) {
                trs[i].getElementsByTagName('input')[0].checked = 'checked'; 
            }  
        }
    }
}

<input type="checkbox" name="sAll" onclick="selectBOB(this)" /> Select Bob
函数selectBOB(){
var trs=document.getElementsByTagName('tr');
对于(变量i=0;i
这不是一个超级灵活的解决方案,因为它依赖于您的标记保持这种格式,但可能会让您朝着正确的方向前进

HTML

选择所有BOB
选择所有FRED

某个领域 上下快速移动 某个领域 上下快速移动 某个领域 弗莱德 某个领域 杰克
JavaScript

function setChecks( checkboxElem ) {
    var trs = document.getElementById('myTable').getElementsByTagName('tr');
    for( var i = 0; i < trs.length; i++ ) {
        var tds = trs[i].getElementsByTagName('td');
        for( var k = 0; k < tds.length; k++ ) {
            if( tds[k].innerText == checkboxElem.getAttribute('data-name') 
                || tds[k].textContent == checkboxElem.getAttribute('data-name')) {

                trs[i].getElementsByTagName('input')[0].checked = checkboxElem.checked;
            }  
        }
    }
}
函数设置检查(checkboxElem){
var trs=document.getElementById('myTable').getElementsByTagName('tr');
对于(变量i=0;i
这段代码是由某种服务器端脚本语言+数据库输出的吗?是的-它是由PHP生成的。好的,谢谢,你还有一个函数名
selectBob()
,但是把onclick设置为
selectNR(this)
。我还将用选择和取消选择按钮更新我的答案。这听起来不是忘恩负义,但您的示例在Firefox:o中不起作用(@David,you don't:P似乎你无法从Firefox的表格单元格中获取innerText,我已经更新了这个示例,以获取innerText或在Firefox中工作的textContent,这可能是一个很有用的附加功能-我如何获得多个“document.getElementById('select')。onclick=function(){setChecks('Bob',this)};”所以我可以在一个页面中找到:document.getElementById('select').onclick=function(){setChecks('Fred',this)};和document.getElementById('select').onclick=function(){setChecks('Jack',this)};另外?如果您可以控制HTML,则可以将数据属性设置为复选框,然后将此传递给它们。
。查看此更新的示例,看看它是否适合您的需要。
function setChecks( checkboxElem ) {
    var trs = document.getElementById('myTable').getElementsByTagName('tr');
    for( var i = 0; i < trs.length; i++ ) {
        var tds = trs[i].getElementsByTagName('td');
        for( var k = 0; k < tds.length; k++ ) {
            if( tds[k].innerText == checkboxElem.getAttribute('data-name') 
                || tds[k].textContent == checkboxElem.getAttribute('data-name')) {

                trs[i].getElementsByTagName('input')[0].checked = checkboxElem.checked;
            }  
        }
    }
}