繁体   English   中英

Javascript(纯)选择第一个元素(表)

[英]Javascript (pure) select first element (table)

我有两个这样的表:

<table>
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>
<table>
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>

他们都是一样的。 我必须使用纯javascript选择第一个(和第二个)。 在jQuery中它是$(table:first)

如果表是这样的(使用类),我可以使用getElementByClassName('class')[0]

<table class="class">
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>
<table class="class">
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>

您可以使用:

var firstTable = document.getElementsByTagName("table")[0]

这是跨浏览器兼容的。

对于较新的浏览器,您可以使用:

var firstTable = document.querySelector("table")

这将选择第一个表。

您可以在document上使用.getElementsByTagName("table") ,它将返回包含文档中所有表的NodeList NodeLists是类似于数组的对象,表的返回顺序与文档中的顺序相同,因此您可以使用其索引获取第一个元素。

var firstTable = document.getElementsByTagName("table")[0];

NodeLists是实时的

值得注意的是.getElementsByTagName()返回的NodeList实时的 ,这意味着如果在调用.getElementsByTagName()之后进行DOM操作,那些操作将反映在列表中。

var tables = document.getElementsByTagName("table");
var firstTableBefore = tables[0];

/*
If you then prepend a new table to the body at this point, calling tables[0] 
again will now return the newly added element
*/

var firstTableAfter = tables[0];

// firstTableBefore and firstTableAfter will NOT be the same

您可以使用getElementsByTagName()来获取表集合,并为第一个表使用0索引。

firstTable = document.getElementsByTagName('table')[0];

getElementsByTagName [MDN]返回一个NodeList ,它是一个类似数组的对象。 元素按文档顺序返回。 您只需通过索引访问每个元素:

var tables = document.getElementsByTagName('table');
// first table: tables[0]

您可以使用以下命令获取页面上的元素数组:

var tables= document.getElementsByTagName("table");

然后

tables[0]

会给你第一张桌子。

在您的修改如下:

<table id="first">
  <tr>
     <td></td>
     <td></td>
  </tr>
</table>

<table id="second">
  <tr>
     <td></td>
     <td></td>
  </tr>
</table>

在你的js代码中:

var table1=document.getElementByID("first");

您可以将此代码用于您的解决方案

<html> 
 <head><title>hello</title>
 </head>
 <body>

     <table> 
        <tr>
             <td>click first td(table1)</td></br>
             <td>click second td(table1)</td></br>
        </tr>
    </table>
    <table> 
        <tr>
             <td>first td(table2)</td></br>
             <td>second td(table2)</td></br>
        </tr>
    </table>
    <script>
            var firstTable = document.getElementsByTagName("table")[0];
            //alert(firstTable)

                cells = firstTable.getElementsByTagName('td');

                for (var i=0,len=cells.length; i<len; i++){
                    cells[i].onclick = function(){
                        alert(this.innerHTML);
                    }
                }
    </script>
 </body>
</html>

要按tag获取第一个表,您只需执行以下操作:

var first = document.getElementsByTagName("table")[0];

为了得到第一台class ,你可以简单地这样做:

var first = document.getElementsByClassName("class")[0];

小提琴

使用纯js,您可以使用不同的document.getelement命令获取元素。 你在这里寻找的是

document.getElementsByTagName("table")

这将返回一个数组,你可以从那里开始工作。

您可以使用document.getElementsByTagName javascript调用。

对于您的HTML,如上所述:

var allTables = document.getElementsByTagName("table")
alert(allTables.length);

警告我2。

然后你可以访问allTables[0]等...

还有一种方法可以做到这一点。

 let firstTable = document.querySelectorAll("table")[0]; let secondTable = document.querySelectorAll("table")[1]; 
 <table> <tr> <td>first td(table1)</td> <td>second td(table1)</td> </tr> </table> <table> <tr> <td>first td(table2)</td> <td>second td(table2)</td> </tr> </table> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM