2016-03-02 74 views
-3

我用insertAfter(根据How to do insert After() in JavaScript without using a library?),但是,在我的情况下,它不起作用。javascript insertAfter不起作用

为什么?

<!doctype html> 
<html lang="en"> 
    <head></head> 
    <body> 
     <table id="myTable"> 
      <tbody> 
       <tr> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td></td> 
       </tr> 
      </tbody> 
     </table> 
     <script> 
      function insertAfter(newNode, referenceNode) { 
       referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); 
      } 

      _table = document.getElementById("myTable"); 
      _tbody = _table.getElementsByTagName("tbody")[0]; 
      n = _tbody.getElementsByTagName("TR").length; 
      _referenceNode = _tbody.getElementsByTagName("TR")[n - 1] 

      _newTR = "<tr><td>A very complex table<td></td><td>much more complex than in this example</td></tr>"; 

      parser = new DOMParser() 
      _newNode = parser.parseFromString(_newTR, "text/xml"); 

      insertAfter(_newNode, _referenceNode); 
     </script> 
    </body> 
</html> 
+3

[你真的只是问这个问题询问(http://stackoverflow.com/questions/35758680/how-to-fix-this-javascript-error-当创造-A-复表动态地)。你想成为被禁止的问题吗?因为删除和重新分析问题就是你如何得到禁止的问题。 –

+1

你只能使用appendChild。你为什么要做所有这些事情? –

回答

2

_newNode是一个XML文档。你不能直接在你的HTML中插入一个#document。 (否则,你得到这个错误:Uncaught HierarchyRequestError: Failed to execute 'insertBefore' on 'Node': Nodes of type '#document' may not be inserted inside nodes of type 'TBODY'.

尝试使用

insertAfter(_newNode.childNodes[0], _referenceNode); 

因为XML文档的第一个孩子是你以后的元素。

此外,您的HTML无效。用途:

_newTR = "<tr><td>A very complex table</td><td>much more complex than in this example</td></tr>"; 

_newTR = "<tr><td>A very complex table<td></td><td>much more complex than in this example</td></tr>"; 
+0

感谢这对于像我这样的新手知道XML文档和节点之间的区别并不明显。 – user310291

+0

@ user310291'console.log'是你的朋友。 – Hatchet

+0

问题在于console.log对于像我这样的新手来说不够明确。我还有另一个问题http://stackoverflow.com/questions/35759582/how-to-use-javascript-domparser-parsefromstring-on-complex-string – user310291