次の場合に問題が発生します。
私の目標は分を追加することです。2フィールドをテーブルに入力します。次のステップでは、新しく生成されたセルをループして、新しく生成されたフィールドから値を取得できる必要があります。
コードは次のようになります。
新しいセクションを追加するための呼び出し(1.入力フィールド)
<a href="javascript:;" onclick="addAbschnittElement();">
<spring:message code="newSection"/></a>
JS:新しいフィールドを追加します
function addAbschnittElement() {
var ni = document.getElementById('tbl_produktinfo');
var numi = document.getElementById('val');
var num = (document.getElementById('val').value -1)+ 2;
numi.value = num;
var newTr = document.createElement('tr');
var newTrIdName = 'tr_abschnitt_'+num;
var newTdIdName = 'td_abschnitt_'+num;
var newDivIdName = 'div_abschnitt_'+num;
var hiddenValueName = 'hv_'+newTrIdName;
newTr.setAttribute('id',newTrIdName);
newTr.innerHTML = '<td id="' + newTdIdName + '"><div id="'+newDivIdName+'"><input id="a'+num+'z0" style="width:500px;" ></input><a href=\'#\' onclick=\'removeAbschnitt("' +newTdIdName + '","'+newDivIdName+'")\'>Abschnitt löschen</a> <input type="hidden" value="0" id="'+ hiddenValueName +'" /></div></td>';
ni.appendChild(newTr);
var li = document.getElementById('div_abschnitt_'+num);
var linediv = document.createElement("div");
var lineDivIdName = 'div_line_'+num;
linediv.setAttribute('id',lineDivIdName);
linediv.innerHTML = '<input id="a'+num+'z1" style="width:350px;"></input> <a href=\'#\' onclick=\'addZeile("'+num+'","'+lineDivIdName+'","'+hiddenValueName+'")\'>Zeile hinzufügen</a><br>';
li.appendChild(linediv);
}
そして最後に、この関数が呼び出されます。
function submitForm() {
var mapArray = [];
jQuery.ajaxSettings.traditional = true;
var infoCells = $('#tbl_produktinfo').find('tr').find('td');
infoCells.each(function(){
$(this).each(function(){
$(this).children().each(function()
{
$(this).children().each(function(){
if (this.localName == "input" && this.type == "text")
{
mapArray.push(this.id + ";" + $(this).val());
}
if (this.localName == "div") {
$(this).children().each(function()
{
if (this.localName == "input" && this.type == "text") {
mapArray.push(this.id + ";" + $(this).val());
}
});
}
});
});
});
});
//この場所で、AJAX呼び出しはmapArrayをサーバーに転送します}
この線
var infoCells = $('#tbl_produktinfo').find('tr').find('td');
空のオブジェクトを返します!したがって、mayarrayは入力で満たされることはありません...
私の間違いはどこにありますか?
追加情報:FFのFirebugは、いくつかのセクションを追加した後にDOMが更新されたことを示しています!しかし、IEではありません:(これはバグである可能性がありますが、よくわかりません!