2017-07-18 7 views
0

最後の行を削除するために関数downward()を試してみましたが、最初の行として挿入しましたが、display()関数はテーブルを作成するだけです。テーブルの最後の行を削除し、javascriptの最初の行として設定するには?

<body> 
    <script> 
     function downward() { 
        var table = document.getElementsByTagName('table'); 
        var count = table.rows.length - 1; 
        var table = table[count]; 
        var rows = table.getElementsByTagName('tr'); 
        var shifted = rows[count]; 
        rows[count].parentNode.removeChild(rows[count]); 
        table.insertBefore(rows[0]); 

       } 
    function display() { 
     var table = document.createElement('table'); 

     table.setAttribute("id", "tbl"); 

     for (var i = 0; i < 4; i++) { 
      var tr = document.createElement('tr'); 
      for (var j = 0; j < 4; j++) { 
       var td = document.createElement('td'); 
       var text = document.createTextNode(j+i); 

       td.appendChild(text); 
       tr.appendChild(td); 
      } 
      table.appendChild(tr); 
     } 
     document.body.appendChild(table); 
    } 
    </script> 
<input id="display" type="button" value="Display" onclick="display();" /> 
<input id="downward" type="button" value="downward" onclick="downward();" /> 
    </body> 
+0

document.getElementsByTagName( 'テーブル')からです。コレクションを返し、それを単一の要素として扱います。将来のエラーについては、開発者コンソールをご覧ください。 – epascarello

答えて

0

最後の子を削除し、.insertBeforeを使用して最初の要素の前にそれを挿入するために.removeChildを使用してください。例を参照してください

function myFunction(){ 
 
var table = document.getElementById("myTable"); 
 
var tr = document.getElementById("myTable").lastChild; 
 
table.removeChild[document.getElementsByTagName("tr").lenght]; 
 
table.insertBefore(tr, document.getElementById("myTable").firstChild); 
 
}
<table><tbody id="myTable"><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr></tbody></table> 
 
<br> 
 
<button onclick="myFunction()" value="click me to see the result">click me to see the result</button>

関連する問題