Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果td有任何文本,则附加逗号(,)加html,否则仅附加html_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如果td有任何文本,则附加逗号(,)加html,否则仅附加html

Javascript 如果td有任何文本,则附加逗号(,)加html,否则仅附加html,javascript,jquery,html,Javascript,Jquery,Html,我正在处理一些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.i

我正在处理一些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;

它不是我的,我在它周围看到它,但不知道它是干什么的

一个可能更好的解决方案是建立一个要显示的项目数组,然后使用
.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);

forEach
的替代方案可以是
map

var text = data.entities.map(function(v){ return v.pais }).join(', ');
减少

var text = data.entities.reduce(function(a, b){ return {pais: a.pais +', '+ b.pais}}).pais;
对于三元运算符,需要两个表达式:
condition?expr1:expr2


更新:在每个值上添加
span

var text = data.entities.map(function(v){ return '<span class="countryToDelete">' + v.pais + '</span>'  }).join(', ');
var text=data.entities.map(函数(v){return'+v.pais+''}).join(',');

如果我有我在帖子中提到的前一篇文章呢?它将被保留还是将被覆盖?同时在想,现在我需要向数组中的每个项目添加一些
,因为稍后我将允许通过单击每个项目来删除它们,如何删除?这个答案是最好的+1。就是这样。到OP-不附加
span类
,也不基于
$(“#id-”)查找+text
-这两个都很糟糕-您正在查询表示层的业务逻辑。而是将项目存储在数组中,并向每个项目添加单击处理程序。映射到元素,然后将处理程序附加到元素,而不是字符串。保留对行元素本身的引用,而不是使用选择器来选择它。
var text = data.entities.map(function(v){ return '<span class="countryToDelete">' + v.pais + '</span>'  }).join(', ');