美好的一天,
我很困惑如何在追加字符串时在循环中添加If语句。
继承我的代码
html += '<tr><td></td>'+
'<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
'<td>'+x.transactionType+'</td>'+
'<td>'+x.id+'</td>'+
'<td>'+if(x.description!=null){x.description}+'</td>'+
'<td>'+x.ref_no+'</td>'+
'<td class="align-right">'+x.debit+'</td>'+
'<td class="align-right">'+x.credit+'</td>'+
'<td class="align-right">'+val+'</td></tr>';
});
然后我在IF部分遇到语法错误错误。谢谢您的帮助。它已经有一段时间了,因为我编码为什么我有点困惑。
答案 0 :(得分:2)
您不能在代码中的任何位置放置if
语句。如果您需要在该位置获得此功能,则需要使用三元if运算符?:
html += '<tr><td></td>'+
'<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
'<td>'+x.transactionType+'</td>'+
'<td>'+x.id+'</td>'+
'<td>'+ (x.description!=null ? x.description : '')+'</td>'+
'<td>'+x.ref_no+'</td>'+
'<td class="align-right">'+x.debit+'</td>'+
'<td class="align-right">'+x.credit+'</td>'+
'<td class="align-right">'+val+'</td></tr>';
如果你想使用if
,你应该引入一个保存结果值的变量:
var temp = '';
if (x.description != null)
temp = x.description;
html += '<tr><td></td>'+
'<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
'<td>'+x.transactionType+'</td>'+
'<td>'+x.id+'</td>'+
'<td>'+ temp +'</td>'+
'<td>'+x.ref_no+'</td>'+
'<td class="align-right">'+x.debit+'</td>'+
'<td class="align-right">'+x.credit+'</td>'+
'<td class="align-right">'+val+'</td></tr>';
答案 1 :(得分:1)
你可以像这样使用shorthand if/else:
html += '<td>'+(x.description!=null ? x.description : '' )+'</td>';
在您的代码中:
html += '<tr><td></td>'+
'<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
'<td>'+x.transactionType+'</td>'+
'<td>'+x.id+'</td>'+
'<td>'+(x.description!=null ? x.description : '' )+'</td>'+
'<td>'+x.ref_no+'</td>'+
'<td class="align-right">'+x.debit+'</td>'+
'<td class="align-right">'+x.credit+'</td>'+
'<td class="align-right">'+val+'</td></tr>';
答案 2 :(得分:1)
我认为你只需要像这样打破你的连接:
html += '<tr><td></td>'+
'<td>'+moment(x.date_at).format('MM/DD/YYYY') +'</td>'+
'<td>'+x.transactionType+'</td>'+
'<td>'+x.id+'</td>';
if(x.description!=null) html+= '<td>' + {x.description} + '</td>';
html += '<td>'+x.ref_no+'</td>'+
'<td class="align-right">'+x.debit+'</td>'+
'<td class="align-right">'+x.credit+'</td>'+
'<td class="align-right">'+val+'</td></tr>';
});
答案 3 :(得分:0)
您不能像这样使用 if 。根本的问题是,在JavaScript中, if 是语句,而不是表达式,并且它不返回任何值(与Scala等更严格的功能语言不同,其中所有内容都是表达式并产生值)
因此,您有以下选择:
使用三元条件运算符?:会产生一个值,并且实际上可以在表达式中使用:
... + x.description? x.description:``+ ...
唯一的不便之处在于,您始终需要一个else值,因此,仅在 description 中检查是否为null时,您需要提供一个空字符串作为替代。当您需要打印很多字段时可能会很麻烦。
const source = {
first: 'first',
second: null,
third: 'third',
}
function fmt(key) {
return source[key]? source[key] : ''
}
let html = '<div><hr>'
+ fmt('first') + '<hr>'
+ fmt('second') + '<hr>'
+ fmt('third') + '<hr>'
+ '</div>'
document.write(html)
const s = {
first: 'first',
second: null,
third: 'third',
}
let html = '<div><hr>'
+ (s.first || '') + '<hr>'
+ (s.second || '') + '<hr>'
+ (s.third || '') + '<hr>'
+ '</div>'
document.write(html)
我想这比#1更优雅,因为您不必重复进行两次属性访问:)