2016-03-18 8 views
2

私は少し問題があります... PHPコードでは、行の右側のボタンをクリックしてHTMLテーブルに行を追加することができます。 ボタンが表示されている行の下に新しい行が表示されます。それをするには、私は行のポジションを取得する必要がありますが、私はどのようにわからない。Javascriptで行位置を取得するにはどうすればよいですか?

私はこの試みた:あなたはそれで私を助けてくださいすることができ

function deleteRow(rowNumber) { 
 
    document.getElementById("Angebotsformular").deleteRow(rowNumber); 
 
} 
 

 
function addRow(rowNumber) { 
 
      var table = document.getElementById("Angebotsformular"); 
 
      var row = table.insertRow(rowNumber); //THIS IS THE VALUE I NEED TO FIND 
 
      var cell1 = row.insertCell(0); 
 
      var cell2 = row.insertCell(1); 
 
      var cell3 = row.insertCell(2); 
 
      var cell4 = row.insertCell(3); 
 

 
      var posnr = document.createElement("input"); 
 
      var posorder = document.createElement("input"); 
 
      var unit = document.createElement("input"); 
 

 
      posnr.type = "text"; 
 
      posnr.name = "position"; 
 
      posnr.size = 6; 
 
      posorder.type = "text"; 
 
      posorder.name = "order"; 
 
      posorder.size = 6; 
 
      unit.type = "text"; 
 
      unit.name = "unit"; 
 
      unit.size = 6; 
 
      
 
      cell1.appendChild(posnr); 
 
      cell2.appendChild(posorder); 
 
      cell3.appendChild(unit); 
 
      cell4.innerHTML('<span onclick="hinzufuegen();">Add</span><span onclick="loeschen();">Remove</span>'); 
 

 
     }
<tr> 
 
      <td><input type="text" size="6" id="position"></td> 
 
      <td><input type="text" size="6" id="order"></td> 
 
      <td><input type="text" size="6" id="unit"></td> 
 
      <td><span onclick="addRow(this);">Add</span><span onclick="deleteRow(this);">Remove</span></td> 
 
     </tr>

を?

もう1つの問題は、cell4の内容が表示されないということです。 ありがとうございました。

+0

ボタンへの参照を使用して、行(親の親)を見つけて、その行の後に新しい行を挿入することができます。 'button.parent.parent.insertAdjacentHTML( 'afterend'、newRowHtmlString)'のようなものです。 "ボタン"は、あなたの "addRow"関数(ボタンへの参照)で "rowNumber"と呼ばれるもので、新しい行のHTMLは "newRowHtmlString"です。 – JimL

+0

'innerHTML'はメソッドではなくプロパティです。 '='を使用して値を設定すると、 'cell4'の値を表示するのに役立ちます。 – Nicko

+0

これは良い解決策のように見えますが、私はそれを働かせません。このように使う必要がありますか? var row = table.arg.parent.parent.insertAdjacentHTML( 'afterend'、newRowHtmlString); – Niclas

答えて

0

これを解決する方法はいくつかあります。

var table = document.getElementById("Angebotsformular"); 
var row = table.insertRow(rowNumber); 
row.id = 'table_row_1'; 
// Rest of your code... 

cell4.innerHTML = '<span onclick="remove(' + row.id + ');">'; 

// elsewhere... 
function remove(rowId) { 
    var rowToDelete = document.getElementById(rowId); 
} 

ます。また、使用していつでもあなたのテーブルの行にアクセスすることができます一つの非常に簡単な方法は、あなただけ挿入し、その後innerHTMLあなたが作成しているにそれを渡してきた行にIDを追加することです表にアクセスした後のrowsプロパティ。行を繰り返し処理して、探しているデータと比較することができます。

document.getElementById('Angebotsformular').rows // this is an array 
0

私は非常に簡単な方法を自分自身を発見した:

function add(arg,pos) { 
 
      alert((arg.parentNode.parentNode.rowIndex)+pos); 
 
      arg = (arg.parentNode.parentNode.rowIndex)+pos; 
 
      var table = document.getElementById("Angebotsformular"); 
 
      var row = table.insertRow(arg); 
 
     
 
    // and the rest of the code 
 
     
 
    }
<span onclick="add(this, 0);">above</span></br> 
 
<span onclick="add(this, 1);">below</span></br>

私はちょうど ".rowIndex" - パートを知りませんでした。

関連する問題