5

我有一个 HTML 表格,其中一列中有一个复选框。我想知道当用户使用javascript(没有jquery)单击复选框时如何获取行数据?谁能帮我解决这个问题?

谢谢

4

5 回答 5

6

HTML DOM解决您的问题

<script type="text/javascript">
    function getRow(n) {
        var row = n.parentNode.parentNode;
        var cols = row.getElementsByTagName("td");
        var i=0;
        while (i < cols.length) {
            alert(cols[i].textContent);
            i++;
        }
    } 
</script>

<table>
    <tr>
        <td><input type="checkbox" onclick="getRow(this)"  /></td>
        <td>aaa</td>
        <td>bbb</td>
    </tr>
    <tr>
        <td><input type="checkbox" onclick="getRow(this)" /></td>
        <td>ccc</td>
        <td>ddd</td>
    </tr>
    <tr>
        <td><input type="checkbox" onclick="getRow(this)" /></td>
        <td>eee</td>
        <td>fff</td>
    </tr>
</table>

编辑: 这个脚本会帮助你更多,我认为:

function getRow(n) {
    var row = n.parentNode.parentNode;
    var cols = row.getElementsByTagName("td");
    var i = 0;

    while (i < cols.length) {
        var val = cols[i].childNodes[0].nodeValue;
        if (val != null) {
            alert(val);
        }

        i++;
    }
}
于 2013-08-28T12:36:29.143 回答
5

你可以尝试这样的事情:

HTML:

<table>
    <thead>
        <tr><th></th><th>Row Text</th></tr>
    </thead>
    <tr>
        <td><input type="checkbox" /></td>
        <td>Test</td>
    </tr>
    <tr>
        <td><input type="checkbox" /></td>
        <td>Test 2</td>
    </tr>
    <tr>
        <td><input type="checkbox" /></td>
        <td>Test 3</td>
    </tr>
</table>

JavaScript:

checkboxes = document.getElementsByTagName("input"); 

for (var i = 0; i < checkboxes.length; i++) {
    var checkbox = checkboxes[i];
    checkbox.onclick = function() {
        var currentRow = this.parentNode.parentNode;
        var secondColumn = currentRow.getElementsByTagName("td")[1];

        alert("My text is: " + secondColumn.textContent );
    };
} 

JSFiddle:http: //jsfiddle.net/markwylde/wzPHF/1/

于 2013-08-28T12:07:46.820 回答
0

这将直接为您提供行内容(tr 中的所有 td)HTML:

<table>
    <tr id="tr1">
        <td>
            <input type="checkbox" value="chkbox1" id="chk1">
        </td>
        <td>
            Lorem ipsum text
        </td>
    </tr>
    <tr id="tr2">
        <td>
            <input type="checkbox" value="chkbox2" id="chk2">
        </td>
        <td>
            Lorem ipsum text
        </td>
    </tr>
</table>

查询:

$(document).ready(function(){
    $('#chk1, #chk2').on('change',function(){
            if($('#chk1').prop('checked') || $('#chk2').prop('checked'))
            {
                var ids=$(this).parent().parent().html();
                alert(ids);
            }
            else
            {
            }
        });
    })
于 2013-08-28T12:29:32.907 回答
0

如果您的选择直接在 td 中,请尝试以下操作:

sel.onclick = function(){
  row = this.parentNode.parentNode
  //then what you need
}

请注意,首先您必须使用 document.getElementById() 或 document.getElementsByTagName() 找到 sel

此外,您可能需要处理 onchange 事件而不是 onclick

于 2013-08-28T11:56:35.050 回答
0

如果你是新人:

复选框的 onChange EVENT 将调用我命名为“检查”的函数

它将发送“This.checked”,这意味着,将发送 True 或 false 到函数“checking”,然后我进入函数获取发送的 True 或 False,并将其放入我称为“temp”的变量中.

HTML:onchange="checking(this.checked)" <--- 发送:"This.checked"(This = 创建事件 onchange 的对象,而 .checked 是适当的)您甚至可以发送多个信息,例如this : onchange="checking(this.checked,this.id)" 等等。

JAVASCRIPT :function checks(temp) <--- 这就是它如何在 HTML 中获取“this.checked”,并将其放入变量 temp 中。接收多个信息:函数检查(temp,temp2)等等。(命名为你想要的)

然后我用变量“temp”运行一个“if”,如果它的值=true,那么做警报。

希望它有所帮助,考虑一下并工作它,以便它适合您的需要!

HTML:

<table>
        <tr>
                <td>
                        <input type="checkbox" value=""onchange="checking(this.checked)">
                </td>
                <td>
                        <label>Something Here</label>
                </td>
        </tr>
</table>

JAVASCRIPT:

            function checking(temp)
            {

                if(temp == true)
                {
                    alert("Checkbox is checked");
                }
                else
                {
                    alert("Checkbox is NOT checked");
                }
            }
于 2017-06-29T19:18:20.820 回答