2011-06-08 104 views
0

我必須根據用戶選擇在兩個表格之間進行切換選擇我可以使用表格對象模型進行切換,但存在問題,因爲我刪除一個表格並加載另一個表格,但下一次當我切換回第一個表格時不會得到表格ID並且不能工作。我們可以刪除dom表嗎?

與DOM這樣工作

var tbl1 = document.createElement("table"); 

tbl1.setAttribute('id','shorttable'); 

進行刪除我用下面的Java腳本

var b = document.getElementById('shorttable'); 

document.removeChild(b); 

,但給我的異常

uncaught Error: NOT_FOUND_ERR: DOM Exception

,而有沒有辦法做到這一點使用DOM?

@lonesomeday謝謝你的答覆,但它不工作時,我從其他函數調用它? 我正在嘗試的是這樣的。

<html> 
    <head> 
    <title>test dom</title> 
    <script> 

    function trackmode() 
{ 
    // i have to delete other table from this function where it is not working 
    var b = document.getElementById('shorttable'); 
    alert(b); 
    b.parentNode.removeChild(b); 

    var body = document.getElementsByTagName("body")[0]; 


    // creates a <table> element and a <tbody> element 
    var tbl  = document.createElement("table"); 
    tbl.setAttribute('id','tracktable'); 
    var tblBody = document.createElement("tbody"); 

    // creating all cells 
    for (var j = 0; j < 2; j++) { 
     // creates a table row 
     var row = document.createElement("tr"); 

     for (var i = 0; i < 2; i++) { 
      // Create a <td> element and a text node, make the text 
      // node the contents of the <td>, and put the <td> at 
      // the end of the table row 
      var cell = document.createElement("td"); 
      var cellText = document.createTextNode("cell is row "+j+", column "+i); 
      cell.appendChild(cellText); 
      row.appendChild(cell); 
     } 

     // add the row to the end of the table body 
     tblBody.appendChild(row); 
    } 

    // put the <tbody> in the <table> 
    tbl.appendChild(tblBody); 
    // appends <table> into <body> 
    body.appendChild(tbl); 
    // sets the border attribute of tbl to 2; 
    tbl.setAttribute("border", "2"); 
} 


function shortenmode() 
{ 

    var b = document.getElementById('tracktable'); 
b.parentNode.removeChild(b); 

    var body1 = document.getElementsByTagName("body")[0]; 
    // creates a <table> element and a <tbody> element 
    var tbl1 = document.createElement("table"); 
    tbl1.setAttribute('id','shorttable'); 
    var tblBody1 = document.createElement("tbody"); 

    // creating all cells 
    for (var j = 0; j < 2; j++) { 
     // creates a table row 
     var row = document.createElement("tr"); 

     for (var i = 0; i < 2; i++) { 
      // Create a <td> element and a text node, make the text 
      // node the contents of the <td>, and put the <td> at 
      // the end of the table row 
      var cell = document.createElement("td"); 
      var cellText = document.createTextNode("cell is row "+j+", column "+i); 
      cell.appendChild(cellText); 
      row.appendChild(cell); 
     } 

     // add the row to the end of the table body 
     tblBody1.appendChild(row); 
    } 

    // put the <tbody> in the <table> 
    tbl1.appendChild(tblBody1); 
    // appends <table> into <body> 
    body1.appendChild(tbl1); 
    // sets the border attribute of tbl to 2; 
    tbl1.setAttribute("border", "2"); 

     //here it will work 
    //var b = document.getElementById('shorttable'); 
    //alert(b); 
    //b.parentNode.removeChild(b); 

    //myP.removeChild(myTextNode); 
} 


    </script> 
    </head> 
    <body > 
<button type="button" name="website" onclick=trackmode() > track</button> 
<button type="button" name="website1" onclick=shortenmode() > short </button> 
</body> 
</html> 
+0

你能展示你的HTML並解釋什麼是未能發生? – lonesomeday 2011-06-08 10:54:36

+0

我試圖刪除當前表並按照按鈕單擊顯示新的表。 – sagar 2011-06-08 11:00:05

+0

其工作..因爲我在這裏顯示同一張表,這就是爲什麼我沒有認出它 – sagar 2011-06-08 11:38:32

回答

5

要刪除一個元素,你需要從它的母公司從文件中刪除。所以:

b.parentNode.removeChild(b); 
相關問題