2017-09-06 11 views
0

addmorebutton td行のインデックスに行を挿入しようとしています。jqueryなしのインデックスにHTMLテーブル行クローンを挿入します。

最初の試みは実際には希望のインデックスに行を追加しますが、予想通りではありません。単に実際には境界付き行の列ボックスを追加するだけです。

クリックしたtdのインデックスに新しい行を挿入するにはどうすればいいですか?これは空白で、実際にはテーブルから離れていますか?

function deleteRow(row) { 
 
    var i = row.parentNode.parentNode.rowIndex; 
 
    document.getElementById('Table').deleteRow(i); 
 
} 
 

 

 
function addRow() { 
 
    var i = row.parentNode.parentNode.rowIndex; 
 
    document.getElementByID('Table').insertRow(i); 
 
} 
 
turkSetAssignmentID();
<script type='text/javascript' src='https://s3.amazonaws.com/mturk-public/externalHIT_v1.js'></script> 
 
<form name='mturk_form' method='post' id='mturk_form' action='https://www.mturk.com/mturk/externalSubmit'> 
 
    <input type='hidden' value='' name='assignmentId' id='assignmentId' /> 
 

 
    <h1>This is a test</h1> 
 

 
    <div id="tablediv"> 
 
    <input type="button" id="addbutton" value="Add Index" /><br/><br/> 
 
    <table id="Table" border="1"> 
 
     <tr> 
 
     <td>Index</td> 
 
     <td>Measured Depth</td> 
 
     <td>Inclination</td> 
 
     <td>Azimuth</td> 
 
     <td>Delete?</td> 
 
     <td>Add Row?</td> 
 
     </tr> 
 
     <tr> 
 
     <td>1</td> 
 
     <td><input size=25 type="text" id="Measured Depth" contenteditable='true'></td> 
 
     <td><input size=25 type="text" id="Inclination" contenteditable='true'></td> 
 
     <td><input size=25 type="text" id="Azimuth" contenteditable='true'></td> 
 
     <td><input type="button" id="delbutton" value="Delete" onclick="deleteRow(this)" /></td> 
 
     <td><input type="button" id="addmorebutton" value="Add More Indexs" onclick="addRow.apply(this)" /></td> 
 
     </tr> 
 
    </table> 
 
    </div> 
 

 
    <p><input type='submit' id='submitButton' value='Submit' /></p> 
 
</form>

+0

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。 –

+1

挿入された行は完全に空白です。既存の2番目の行と同じ行が必要な場合は、HTMLをクローンする必要があります。あなたのコードに基づいた厄介な例:https://jsfiddle.net/h4koj4bx/(あなたの '' sで 'name =" azimuth [] "'などを使用してデータを正しく送信する必要があります)この質問は人々が角度、Reactなどを作った理由をうまく紹介しています) –

+0

@ChrisGよろしくお願いします。名前以外の角度や反応などにはあまりよく慣れていません...あなたのフィドルは美しく働きました。また、入力のための追加のヒントを感謝します。私は角度のような他の拡張を調べます。 –

答えて

0

あなたはappendChild()機能をvarと上の行を保存し、新しい行にそれぞれのセルを追加しようとすることができます。このような何か:

function addRow(row) { 
 
     var i = row.parentNode.parentNode.rowIndex + 1; 
 
     var nextRow = document.getElementById('Table').insertRow(i); 
 

 
     // Start iterating over all the cells on the row 
 
     var cell = nextRow.insertCell(0); 
 
     cell.appendChild(document.createTextNode(i)); 
 
     cell = nextRow.insertCell(); 
 
     cell = nextRow.insertCell(); 
 
     cell = nextRow.insertCell(); 
 
     cell = nextRow.insertCell(); 
 
     cell = nextRow.insertCell(); 
 
     input = document.createElement("Input"); 
 
     input.type = "button"; 
 
     input.setAttribute("onclick", "addRow(this)"); 
 
     input.value = "Add More Indexs" 
 
     cell.appendChild(input); 
 
    }

そしてもちろんのは、各セルにそれぞれの入力を追加します。 次に、新しいものの下にある行のインデックス番号を増やす関数を追加したいと考えています。

また、元のボタンのonclickの値をaddRow(this)に変更しました。

関連する問題