<tr>
<td><?= $row['student'] ?></td>
<td><?= $row['StudentID'] ?></td>
<td><?= $row['TeamMark'] ?></td>
<td><input type="text" name="final_grade" /></td>
<td><input type="submit" value="grade" onclick="GRADE(this.parentNode.parentNode.childNodes[7].innerHTML)" /></td>
</tr>
点击按钮,输出<input name="final_grade" type="text">,如果把GRADE的参数变成this.parentNode.parentNode.childNodes[7].type/value等,输出都是undefined,为什么,我想得到它的value,求指导
并且节点上面为何是第7个子节点?搞不懂

解决方案 »

  1.   

    this.parentNode.parentNode.childNodes[7].innerHTML你这个输出来是什么啊。。
      

  2.   

    childNodes[3] 得到的是 TR下的 第4个TD
      

  3.   

    GRADE函数直接alert传进的参数,this.parentNode.parentNode.childNodes[7].innerHTML输出来是<input name="final_grade" type="text">
      

  4.   

    不是,childNodes[7]才是第4个td,我也不知道为什么,[5]是第3个,[3]是第2个,我也不知道怎么回事
      

  5.   

    1.你给它加个value值在测试。。2.你用getattribute('type')试试
      

  6.   

    GRADE(this.parentNode.parentNode.childNodes[7].getAttribute('value')),返回null
      

  7.   

    你给它写值没有啊。。不写值当然是Null 了
      

  8.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>
    <head><title>onresize test</title>
    </head><body>
    <input type="text" name="final_grade" id='aa' value='aasdfasd'/>
    <script type="text/javascript">    alert(document.getElementById('aa').type);
        alert(document.getElementById('aa').value);
    </script>
    </body>
    </html>做了个简单的测试。。这样是可以输出来的
      

  9.   

    GRADE(。。)把这个方法发来看下。。
      

  10.   

    function GRADE(temp)
    {    
     alert(temp);
        
    }
      

  11.   

    GRADE(this.parentNode.parentNode.childNodes[7].getAttribute('value')),返回null
    你只是这个方法返回为空。。
    但是你this.parentNode.parentNode.childNodes[7].getAttribute('value')这个返回什么值啊。。
      

  12.   

    function GRADE(temp)
    {  
    alert(temp);
       
    }它这个方法就输出null
      

  13.   

    this.parentNode.parentNode.childNodes[7] 节点是第5个td
    this.parentNode.parentNode.childNodes[7].firstChild 才是其下的input节点 但只能获得其outerHTML 不能获得其value
    应该使用Document对象取 而不是xml的DOM文档节点取
    getElementById() getElementsByName()这类方法获取标签对象你的例子要取标签本身的值 直接onclick="GRADE(this.value)";不就得了 至于GRADE不知道你这方法干什么用的
      

  14.   

    this.parentNode.parentNode.childNodes[3].childNodes[0].value才是你想要的
      

  15.   

    是不是在火狐下啊  记得好像有几次在火狐下运行parentNode.chiledNodes结果不对  但ie下可以
      

  16.   

    <script type="text/javascript">
    function init(){
    var tds=document.getElementsByTagName("td");
    for(var i=0;i<tds.length;i++){
    tds[i].onclick=mm;
    }
    }
    function mm(){
    var tr=this.parentNode;
    var td=tr.childNodes[0];
    alert(td.innerHTML);
    }
    window.onload=init;
    </script>
    </head><body>
    <table>
    <tr>
    <td>1</td>
    <td>2</td>
    </tr>
    <tr>
    <td>3</td>
    <td>4</td>
    </tr>
    </table>
    </body>
    像这样  大体意思是当点击任意一个td时则输出该行下的第一个td  ie下没问题,火狐下就是undefined了,而且得到的子节点数也不一样   难道是事件捕捉和冒泡所致   迷惑了  呵呵  求高手简答
      

  17.   

    第一个table下 第n行 第m列的 内部文本
    alert(document.getElementsByTagName("table")[0].getElementsByTagName("tr")[n-1].getElementsByTagName("td")[m-1].innerHTML);
    把innerHTML换成.getElementsByTagName("input")[0]取得input标签 再加.value取得其值