如何在JQuery中使用replaceWith追加for循环

时间:2017-12-15 16:26:22

标签: javascript jquery

我需要将我的表中的每个标记追加到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);

2 个答案:

答案 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可能包含一些无效的字符,这会使你的代码无效,这种情况下你会看到一些我相信的错误控制台。