簡體   English   中英

如何從表格單元格獲取文本

[英]How to Get text from table cell

這就是我現在所擁有的:

這是表:

<table border='1'>

        <tr>
            <td>
                Employee Code
            </td>
            <td>
                FirstName
            </td>
            <td>
                LastName
            </td>
            <td>
                Address
            </td>
        </tr>

        <tr class='display' onclick='hello();' >
            <td id='trId1'>
                E100
            </td>
            <td>
                Alex
            </td>
            <td>
                Stone
            </td>
            <td>
                33 Wave Place
            </td>
        </tr>

        <tr class='display' onclick='hello();' >
            <td id='trId1'>
                E200
            </td>
            <td>
                Alex
            </td>
            <td>
                Stone
            </td>
            <td>
                33 Wave Place
            </td>
        </tr>

       -----> etc...
    </table>

這是javascipt

<script>
        function hello(){


            var r = document.getElementById("trId1").innerHTML;
            alert(r);
        }
    </script>

當單擊第一行時,JavaScript獲得E100,這是正確的,但是當單擊E200行時,它仍顯示E100,如果有更多數據,我將如何獲得E200,依此類推? 是否有僅JavaScript的解決方案

首先,您不能在頁面上擁有與無效HTML5相同的兩個ID,它們會在某些瀏覽器中導致錯誤。 之所以得到您所得到的,是因為在尋找一個ID時,大多數瀏覽器只會尋找一個ID的出現(因為這正是有效的HTML,每頁1個唯一的ID)。 因此,要修正您的HTML代碼,您可能還需要為表提供一個標題:

   <table border='1'>
      <thead>
        <tr>
            <th>
                Employee Code
            </th>
            <th>
                FirstName
            </th>
            <th>
                LastName
            </th>
            <th>
                Address
            </th>
        </tr>
       </thead>
       <tbody>
        <tr class='display' onclick='hello(1);' >
            <td class='trId1'>
                E100
            </td>
            <td>
                Alex
            </td>
            <td>
                Stone
            </td>
            <td>
                33 Wave Place
            </td>
        </tr>

        <tr class='display' onclick='hello(2);' >
            <td class='trId1'>
                E200
            </td>
            <td>
                Alex
            </td>
            <td>
                Stone
            </td>
            <td>
                33 Wave Place
            </td>
        </tr>

       -----> etc...
       </tbody>
    </table>

最好的選擇是使用getElementsByClassName函數並將數組遍歷到所需的數組。 (一般更改,代碼)假設由於某種原因您根本無法使用JQuery:

<script>
    function hello(rowClickedNumber){

        var RowClicked = document.getElementsByClassName("trId1");
        var r = RowClicked[0].innerHTML;
        alert(r); //E100
        var r = RowClicked[1].innerHTML;
        alert(r); //E200
        var r = RowClicked[rowClickedNumber].innerHTML;
        alert(r);
    }
</script>

但是,一個更簡單的解決方案是使用JQuery,這將限制瀏覽器的不一致。 加載文檔后:

 $(body).on("click", "tr", function(){ 
     var getData =$(this).children(".trId1").getHTML();
     console.log(getData);
 });

注意:這是在您不可避免地向表中添加更多項時允許的(因此,代碼獲得行的子元素的原因)。

*編輯:添加了注釋

**編輯:修復了拼寫和語法

*編輯:修復了javascript函數。

我對此有一個解決方案。 請檢查下面的代碼和小提琴鏈接。 如果您有任何問題,請告訴我。

小提琴

HTML:

<table border='1'>
    <tr>
        <td>
            Employee Code
        </td>
        <td>
            FirstName
        </td>
        <td>
            LastName
        </td>
        <td>
            Address
        </td>
    </tr>
    <tr class='display' onclick='hello(this);' >
        <td class='trId1'>
            E100
        </td>
        <td>
            Alex
        </td>
        <td>
            Stone
        </td>
        <td>
            33 Wave Place
        </td>
    </tr>
    <tr class='display' onclick='hello(this);' >
        <td class='trId1'>
            E200
        </td>
        <td>
            Alex
        </td>
        <td>
            Stone
        </td>
        <td>
            33 Wave Place
        </td>
    </tr>
</table>

JavaScript的:

function hello(obj){
    alert(obj.childNodes[1].innerText); //The first child being a text node.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM