<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <title>Untitled Page</title>
</head>
<body onload="f()">     <script type="text/javascript">    
         function   f()
         {
            var t=document.getElementById("tb").childNodes.item(0);
           
            for(var i=0;i< t.childNodes.length;i++)
            {
            alert(t.childNodes(i).firstChild.firstChild.nodeValue);
            alert(t.childNodes(i).childNodes[1].childNodes[0].nodeValue);     
            }
         }     </script>     <table id="tb">
         <tr>
             <td style="width: 122px">
                 1234</td>
             <td style="width: 89px">
                 <input type="checkbox" /></td>
             <td style="width: 210px">
             </td>
         </tr>
         <tr>
             <td style="width: 122px; height: 21px">
                 2234</td>
             <td style="width: 89px; height: 21px">
                 <input type="text" value="aaaaaaa"/></td>
             <td style="width: 210px; height: 21px">
             </td>
         </tr>
         <tr>
             <td style="width: 122px">
                 3234</td>
             <td style="width: 89px">
                 <input type="checkbox" /></td>
             <td style="width: 210px">
             </td>
         </tr>
     </table>
</body>
</html>
还有这种方法:    var rows=document.getElementById('tb').rows;
   for(var i=0;i<rows.length;i++)
   {
var cells=rows[i].cells;
for(var j=0;j<cells.length;j++)
{
alert(cells[j].innerText);
}
                   }
第一种方法不可以在google中运行,只能在IE中运行,但是每个中方法得到的是:
<input id="testId" name="test" value="">
这种形式
谁知道应该怎么来遍历,找了好久也没有找到

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
         <title>Untitled Page</title>
    </head>
    <body onload="f()">     <script type="text/javascript">    
             function   f()
             {
                var t=document.getElementById("tb").getElementsByTagName('input');
    for(var i = 0, len = t.length; i < len; i++ ){
    alert( t[i].type )
    }
               
             }     </script>     <table id="tb">
             <tr>
                 <td style="width: 122px">
                     1234</td>
                 <td style="width: 89px">
                     <input type="checkbox" /></td>
                 <td style="width: 210px">
                 </td>
             </tr>
             <tr>
                 <td style="width: 122px; height: 21px">
                     2234</td>
                 <td style="width: 89px; height: 21px">
                     <input type="text" value="aaaaaaa"/></td>
                 <td style="width: 210px; height: 21px">
                 </td>
             </tr>
             <tr>
                 <td style="width: 122px">
                     3234</td>
                 <td style="width: 89px">
                     <input type="checkbox" /></td>
                 <td style="width: 210px">
                 </td>
             </tr>
         </table>
    </body>
    </html>
    楼主 这个意思?
      

  2.   

    function f() {
    var obj = document.getElementById('tb').getElementsByTagName('input'); //获取id值为tb的元素中的所有input子元素
    for (var i = 0; i < obj.length; i ++) alert(obj[i].value);
    }
      

  3.   

    第二段代码中,innerText属性是IE私有的,应该使用标准属性innerHTML代替。
      

  4.   

    再补充一下,楼主你写的代码无法达到你预期目的的原因在于各浏览器对childNodes、firstChild属性的实现是不同的,比如下面这个简单例子,在所有的标准浏览器下都弹出3,也就是div元素下存在3个子节点。但在IE6/7/8中弹出的是1,因为div内的p标签前后都有换行,标准浏览器会将换行、空白字符等作为文本节点来对待,而IE6/7/8会忽略掉这些字符。
    <div id="demo">
    <p>demo</p>
    </div>
    <script type="text/javascript">
    var demo = document.getElementById('demo');
    alert(demo.childNodes.length);
    </script>
      

  5.   


    $("#tb").find(":input").each(function(){
       alert($(this).val());
    });
      

  6.   

    document.getElementById("tb").getElementsByTagName('input');
    childNodes 有兼容问题
      

  7.   

    document.getElementById("tb").getElementsByTagName('input');
      

  8.   

    javascript写法document.getElementById("tb").getElementsByTagName('input');//先根据ID取到表,再根据tag取到inputjquery写法
    $("#tb").find(":input");//意义一样,只是写法更简洁,兼容性不用操心,jquery帮你处理了兼容性问题。
    var t=document.getElementById("tb").childNodes.item(0);
               
                for(var i=0;i< t.childNodes.length;i++)
                {
                alert(t.childNodes(i).firstChild.firstChild.nodeValue);
                alert(t.childNodes(i).childNodes[1].childNodes[0].nodeValue); 
    这种写法childNodes 有兼容问题。
      

  9.   

    这样写好像不行?
    document.getElementById("tb").getElementById('input');
      

  10.   

    看了,不是我想要的.
    我是想从下一个节点直接找到下一个节点,就像链表一下,而不是每一次都重新找一次.
    一楼的程序,是获取这个集合应该也变相的实现了,但是没有取得input的value值.
    测试结果如下[分别取的值]:
    checkbox,text,checkbox获取没有好的实现方法,可能只是我的一厢情愿?