我需要将我的表中的每个标记追加到for循环中,但循环和 replaceWith 不起作用。
如何迭代每个替换或附加到目标的循环?
for ( z = 0; z < json[x].category[y].item.length; z++ ) {
html += '<td id="'+ json[x].category[y].item[z].idCat +'">';
html += '<div class="new-value">'+ json[x].category[y].item[z].value +'</div>';
html += '</td>';
}
$('table tr td.new').replaceWith(html);
答案 0 :(得分:1)
如下所示: -
count = 0;
for ( z = 0; z < json[x].category[y].item.length; z++ ) {
count++;
var html = ''; //define html variable first
html += '<td id="'+ json[x].category[y].item[z].idCat +'">';
html += '<div class="new-value">'+ json[x].category[y].item[z].value +'</div>';
html += '</td>';
$('table tr td.new:eq("'+count+'")').html(html); // use .html()
}
答案 1 :(得分:1)
当您从下面的代码中检查时,它可以正常工作,没问题。
var html = '';
for ( z = 0; z < 3; z++ ) {
html += '<td id="tdnew_' + z + '">';
html += '<div class="new-value">NEW-'+ z +'</div>';
html += '</td>';
}
$('table tr td.new').replaceWith(html);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1"><tr>
<td>OLD-9</td>
<td>OLD-8</td>
<td class="new">OLD7</td>
<td class="new">OLD8</td>
</tr></table>
所以我怀疑可能有两个原因。
案例1
您的javascript代码在<table>
尚未执行之前执行,因此jQuery选择器$('table tr td.new')
实际上没有任何指示。
很简单,您可以在replaceWitdh()
代码行之前添加以下代码,以查看脚本运行时是否存在td.new:
alert($('table tr td.new').length)
如果它警告0,那么当脚本运行时,表,表还没有。
案例2
你的json可能包含一些无效的字符,这会使你的代码无效,这种情况下你会看到一些我相信的错误控制台。