如何通过单击按钮获取单元格值

时间:2014-12-06 23:42:27

标签: javascript jquery html-table

我有一个问题,我无法解决我尝试多少。通过单击编辑客户按钮,我不想从 CustomerNr 单元格中获取值。我的问题是,我不知道如何通过单击按钮获取行索引,然后将其传递给我的函数,以便我可以专门获取该行上的CustomerNr我按下按钮。您可以查看我的jsfiddle链接并注意,这是我第一次使用Javascript / Jquery进行编码。我愿意接受智能解决方案。

在这里你可以看到我走了多远。我设法从特定的单元格中选择值。

function GetCellValues() {
    var Row = document.getElementById("somerow");
    var Cells = Row.getElementsByTagName("td");
    alert(Cells[0].innerText);

}

我已经设法通过点击 td 来获取行索引,但我想通过按下按钮来获取行。

function myMethod(obj) {
    alert(obj.parentNode.rowIndex); // parentNode is also used
}

我不想以某种方式结合这两个函数,就像在C#中一样。 (我是C#程序员)

function GetCellValues(e) {
    //Something here
    alert(Cells[0].Rows[e] innerText);

}

http://jsfiddle.net/6srjc7qL/

3 个答案:

答案 0 :(得分:3)

我已将您的按钮的ID更改为类,因为您无法为具有相同ID的两个元素命名,然后我循环遍历这些元素... Working fiddle

你应该避免使用内联函数,并且最好像这样做,这可以保护你很多时间并保持更好的可维护性:

使用Javascript:

    var a = document.getElementsByClassName('otherButton');

for (var i = 0; i<a.length;i++) {
    a[i].addEventListener('click',function(){

     var b = this.parentNode.parentNode.cells[0].textContent;
    alert(b);


    });


}

HTML:

<table id="somerow">
        <tr>
            <th>CustomerNr</th>
            <th>Name</th>
            <th>Contact</th>
        </tr>
        <tr >
            <td>1</td>
            <td>Cigarettes Inc</td>
            <td>Rambo</td>
            <td>
                <button class="otherButton" >Edit Customer</button>
            </td>
        </tr>
        <tr >
            <td >22</td>
            <td>Razor</td>
            <td>David</td>
            <td>
                <button class="otherButton">Edit Customer</button>
            </td>
        </tr>
        <tr>
            <td>3</td>
            <td>H&M</td>
            <td>Samuel Adams</td>
            <td>
                <button class="otherButton" >Edit Customer</button>
            </td>
        </tr>

}

答案 1 :(得分:2)

按钮位于tr内部的td内部,因此您需要向上移动2个节点。试试这个:

function GetCellValues(obj) {

    alert(obj.parentNode.parentNode.rowIndex);

}

答案 2 :(得分:1)

HTML

    <html>

    <head>
        <style>
            table, td {
                border: 1px solid black;
            }
            .selected {
                background-color: yellow;
            }
        </style>
    </head>

    <body>
        <center>
            <table id="somerow">
                <tr>
                    <th>CustomerNr</th>
                    <th>Name</th>
                    <th>Contact</th>
                </tr>
                <tr>
                    <td>1</td>
                    <td>Cigarettes Inc</td>
                    <td>Rambo</td>
                    <td>
                        <button id="otherButton" onclick="GetCellValues()">Edit Customer</button>
                    </td>
                </tr>
                <tr>
                    <td onclick="myMethod(this);">22</td>
                    <td>Razor</td>
                    <td>David</td>
                    <td>
                        <button id="otherButton" onclick="GetCellValues()">Edit Customer</button>
                    </td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>H&M</td>
                    <td>Samuel Adams</td>
                    <td>
                        <button id="otherButton" onclick="GetCellValues()">Edit Customer</button>
                    </td>
                </tr>
        </center>
    </body>

</html>

JS

function GetCellValues(elm) {
    alert(elm.parentNode.parentNode.cells[0].textContent);
}

function myMethod(obj) {
    alert(obj.parentNode.rowIndex);
}