chinafine

Asp.net,Windows Mobile,Windows Server 醉心于.NET
posts - 105, comments - 69, trackbacks - 6, articles - 244
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

tbody,你注意了吗?

Posted on 2009-03-11 09:25 chinaifne 阅读(142) 评论(0) 编辑 收藏

请看下列代码:看完此段代码,先别急着往下看。你知道结果为什么是这样吗?

<html>
<head>parentElement Test</head>
<body>
<form name= "a">       
    <table name= "b ">
    <tr name= "c"   >       
       <td name="d">       
        <select name= "e" onchange="javascript:alert(this.parentElement.parentElement.parentElement.name) ">
        <option> 1 </option>
        <option> 2 </option>
        <option> 3 </option>
        <option> 4 </option>
        </select>
       </td>    
       <td>   </td>
      </tr>       
      <tr>   </tr>
    </table>       
    </form>  
  </body>
</html>
问题:上述代码中,并没有得出我们预想的b,而是undefined。如果把onchange事件中的代码换成:javascript:alert(this.parentElement.parentElement.parentElement.parentElement.name) ,此时才得出我们预想的b。

请看:
<html>
<head>parentElement Test</head>
<body>
<form name= "a">       
    <table name= "b ">
    <!--这里的tbody,不论你写上或是不写,默认都是存在的-->
    <tbody name="tbody">    
    <tr name= "c"   >       
       <td name="d">       
        <select name= "e" onchange= "javascript:alert(this.parentElement.parentElement.parentElement.name) ">
        <option> 1 </option>
        <option> 2 </option>
        <option> 3 </option>
        <option> 4 </option>
        </select>
       </td>    
       <td>   </td>
      </tr>       
      <tr>   </tr>
     </tbody>
    </table>       
    </form>  
  </body>
</html>
还是第一段的代码,只是在<table>标签后加了<tbody>,再运行,弹出提示tbody。正是我们预想的。