试图获取Javascript中所有TR行的列表

试图获取Javascript中所有TR行的列表,javascript,html,Javascript,Html,抱歉我的无知-我的Javascript不是很好 无论如何,我的标题中有以下内容: <script type="text/javascript"> var tableRows = document.getElementbyId("inventorytable").childNodes; alert(tableRows) </script> var tableRows=document.getElementbyId(“inventorytable”).childNode

抱歉我的无知-我的Javascript不是很好

无论如何,我的标题中有以下内容:

<script type="text/javascript">
var tableRows = document.getElementbyId("inventorytable").childNodes;

alert(tableRows)
</script>

var tableRows=document.getElementbyId(“inventorytable”).childNodes;
警报(表格行)
据我所知,它应该抓取id为“inventorytable”的表的子项,对吗

尝试最终沿DOM树向下移动到表的子级(即TDs)的子级,并根据它们在表中的位置添加字符串。但就目前而言,只是尝试选择表中的子项并提醒它们

我已添加此代码,但仍然没有警报:

<head>
<script type="text/javascript">
window.onload = function inventorytable() {
var tableRows = document.getElementbyId("inventorytable").rows;

alert(tableRows.length);
};
</script>
</head>

window.onload=函数inventorytable(){
var tableRows=document.getElementbyId(“inventorytable”).rows;
警报(tableRows.length);
};
试试:


请参见

您应该做两件事之一:

  • 在关闭标签前输入此代码
  • 用一个函数包装它,并将该函数作为事件处理程序附加到DOMReady或windowload事件
  • 这样做的原因是,当执行代码时(从头部的脚本标记中读取代码时),DOM(HTML元素树)尚未读取

    第二个选项可能如下所示:

    window.onload = function () {
      //your code here
      var tableRows = document.getElementbyId("inventorytable").childNodes;
      alert(tableRows);
    };
    
    $(document).ready( function () {
      // your code here…
      // instead of writing `document.getElementbyId("inventorytable").childNodes;`
      // you could do
      var tableRows = $('#inventorytable').find('tr');
      alert( tableRows );
    });
    
    跨浏览器不支持DOMReady事件,因此有一个库可用于将逻辑附加到该事件-

    我建议您阅读这里的解释:,如果您打算使用jQuery,那么您可以这样做:

    window.onload = function () {
      //your code here
      var tableRows = document.getElementbyId("inventorytable").childNodes;
      alert(tableRows);
    };
    
    $(document).ready( function () {
      // your code here…
      // instead of writing `document.getElementbyId("inventorytable").childNodes;`
      // you could do
      var tableRows = $('#inventorytable').find('tr');
      alert( tableRows );
    });
    

    简单,使用
    getElementsByTagName

    var tableRows = document.getElementById("inventorytable").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    
    请注意,
    tbody
    是在IE浏览器上工作所必需的。然后循环这些元素并警告它们

    for (var i = 0; i < tableRows.length; i++) {
        window.alert(tableRows[i].tagName); // Or whatever...
    }
    
    for(var i=0;i

    这是一种跨浏览器技术,可能在任何地方都适用:)

    我尝试过,但仍然没有弹出警报-这可能与我将其放在标题中的事实有关吗?看看@gryzzly的答案(+1)。getElementById,而不是getElementById的跨浏览器?这似乎是其中的一些。我要试试看。:)是的,而且这是唯一一种真正的让桌子上的人都坐下来的方法。MDN:MSDN:“仅限”?我总是用我张贴的方式。好吧,谢谢你的提示,这对我来说是新的!关于您的方式:若表包含子表怎么办?您确定您的方式返回正确的TBODY?不
    GetElementsByTagname
    返回直接后面的标记吗?所以在我的示例中,即使表中有其他表,它也会在父对象之后返回
    tbody
    ,对吗?