日期:2014-05-16  浏览次数:20407 次

一个令人苦恼的问题

为什么   不能显示   22222   啊,,
把var   menuItemContainer=document.getElementById( "tr1 ");
换位var   menuItemContainer=document.getElementById( "t1 ");
相对于层就能显示啊?

异常奇怪

    <head>      
    <script       language= "javascript ">      
    function       test(){      

    objDragItem   =   document.createElement( "tr ");
   
    var   menuItemContainer=document.getElementById( "tr1 ");
    menuItemContainer.insertBefore(objDragItem);
       
    objDragItem.outerHTML     =     " <tr> <td> 22222 </td> </tr> ";
   
    }      
   
    </script>      
    </HEAD>      
       
    <BODY           bgcolor= "#FFFFFF "       text= "#000000 "       leftmargin= "0 "       topmargin= "0 ">      
    <DIV       id= "t1 "> </DIV>
   
    <table>
    <tr   id= "tr1 ">
    <td> 111 <td>
    <tr>
    </table>
   
    </BODY>      
    <script>      
    test();      
    </script>

------解决方案--------------------
insertBefore()需要两个参数,第一个参数(元素)插在第二个参数(元素)前面

或你可以用 父元素.appendChild (一个参数);加在最后面,对于innerHTML或outerHTML先赋值,再insertBefore/appendChild
------解决方案--------------------
对于用createElement方法创建的元素,不能用outerHTML或innerHTML改变其内容
所以下面的层可以
但你可以这样:
<html>
<head>

</HEAD>
<script language= "javascript ">
function test(){

objDragItem = document.createElement( "tr ");
myTd= document.createElement( "td ");
myText=document.createTextNode( "22222 ");
myTd.appendChild(myText);
objDragItem.appendChild(myTd);
var menuItemContainer=document.getElementById( "tr1 ");

menuItemContainer.parentNode.insertBefore(objDragItem,menuItemContainer);



}

</script>
<BODY bgcolor= "#FFFFFF " text= "#000000 " leftmargin= "0 " topmargin= "0 ">
<DIV id= "t1 "> 单击添加! </DIV>

<table>
<tr id= "tr1 ">
<td> 111 <td>
<tr>
</table>

</BODY>
<script>
document.body.onclick=test;
</script>
</html>
顺便更正一下insertBefor的用法:)
------解决方案--------------------
谁说createElement 出来的元素不能用outerHTML或innerHTML改变其内容
你证实过了么,我做过很多项目都可以动态改变的
------解决方案------------------