初めての質問なので、間違っていたらすみません。
JavaScript を使用してテーブルに行を追加しようとしています。新しく追加された行は、最後から 2 番目の位置に追加されます。最後の行には、新しい行を作成するボタンが含まれています。最後の行には「submitrow」というIDがありますが、その要素を取得してinsertBeforeに渡すと、どういうわけか機能しません。lastChild を 2 番目のパラメーターとして insertBefore に渡すと、動作も奇妙になります。
本文では、これは次の形式です。
<form>
<input type="hidden" name="submit_done" value="true" />
<table id="formtable">
<tr>
<td>Number : </td>
<td><input type="text" name="num[]" /></td>
</tr>
<tr id="submitrow">
<td><input type="button" value="Add one more" onclick="addRow()" /></td>
<td><input type="submit" value="Go!" /></td>
</tr>
</table>
</form>
JavaScript 関数は次のとおりです。
function addRow(){
var new_tr = document.createElement('tr');
var new_td1 = document.createElement('td');
var new_td2 = document.createElement('td');
var new_input = document.createElement('input');
new_td1.innerHTML = 'Number : ';
new_input.type = 'text';
new_input.name = 'num[]';
new_td2.appendChild(new_input);
new_tr.appendChild(new_td2);
new_tr.insertBefore(new_td1, new_td2);
var formtable = document.getElementById('formtable');
var submitrow = document.getElementById('submitrow');
submitrow.style.backgroundColor='red'; /*Works fine, paints button row red*/
formtable.insertBefore(new_tr, submitrow); /*fails, invalid argument*/
}
さて、問題は次のとおりです。
insertBefore は最後の行で失敗します。insertBefore は new_tr オブジェクトでも同様に試行されており、正常に動作することに注意してください。したがって、無効な引数の可能性があるのは submitRow だけです。失敗したステートメントの 1 行上で、shich が正常に赤く塗りつぶされます。
失敗した呼び出しに対して、代わりにが使用されている
submitrow
場合formtable.lastChild
は実行されます。しかし、どういうわけか、その lastChild には上の行も含まれています。つまり、さらに 4 行追加してテスト入力に 1、2、3、4、5 と入力し、[もう 1 つ追加] ボタンを押すと、4 と 5 の間に行が追加されます。
私はそれを推論するために多くのことを試みましたが、どちらの状況の背後にある論理も得ることができませんでした.
解決を願って、皆様に感謝します。
アバイ バーブ、インド