我正在使用一些jQuery代码,我有些疑惑。这就是我现在所说的:
var html = '';
data.entities.forEach(function (value, index, array) {
html += index !== data.entities.length-1 ? value.pais + ', ' : value.pais;
});
var rowUpdate = $('#distribuidorBody').find('#td-' + data.idToUpdate);
rowUpdate.text() !== "" ? html += ', ' + html : html;
rowUpdate.append(html);
最重要的想法:我可以多次执行相同的代码,因此第一次rowUpdate
没有任何值,因此text()
为空,我会在HTML中得到一些输出,例如: Country1, Country2, Country3
依此类推,然后rowUpdate.text()
应为Country1, Country2, Country3
。因此,如果我第二次运行相同的代码并添加Country4, Country5
,则rowUpdate.text()
应为Country1, Country2, Country3, Country4, Country5
。我的代码是对的吗?如果没有任何帮助?我没有收到错误,但我需要了解我所做的事情是对还是错。我也想知道这段代码的作用:
rowUpdate.text() !== "" ?: html += ', ' + html;
这不是我的,我看到它周围,但不知道它做了什么。
答案 0 :(得分:1)
forEach
的替代方案可以是map
。
var text = data.entities.map(function(v){ return v.pais }).join(', ');
或reduce
:
var text = data.entities.reduce(function(a, b){ return {pais: a.pais +', '+ b.pais}}).pais;
对于三元运算符,您需要两个表达式:condition ? expr1 : expr2
MDN
var rowUpdate = $('#distribuidorBody').find('#td-' + data.idToUpdate);
text = (rowUpdate.text() !== "") ? ', ' + text : text;
// alternative with if
// if(rowUpdate.text() !== "") text = ', ' + text ;
rowUpdate.append(text);
更新:在每个值上添加span
var text = data.entities.map(function(v){ return '<span class="countryToDelete">' + v.pais + '</span>' }).join(', ');
答案 1 :(得分:0)
可能更好的解决方案是构建要显示的项目数组,然后使用.join(', ')
创建文本:
var items = [];
data.entities.forEach(function (value, index, array) {
items.push(value.pais);
});
var displayText = items.join(', ');
$('#distribuidorBody').find('#td-' + data.idToUpdate).html(displayText);
现在,最后一行,因为'#td-' + data.idToUpdate
是一个ID,它应该对页面是唯一的(如果没有,你应该这样做)。如果或者一旦确实如此,您可以将其缩短为
$('#td-' + data.idToUpdate).html(displayText);