我有一个使用javascript return
函数返回的HTML表格。它完美无缺,直到我尝试在其中间添加一个额外的if
子句。
function format ( d ) {
return '<div class="slider">'+
'<table id="expand">'+
'<tr>'+
'<td><button class="btn btn-success" value="Save" onclick="saveItem(this)" data-soli="'+d.soli+'" data-comments="'+d.comments+'" >Save</button></td>'+
'</tr>'+
'<tr>'+
'<td class="dropHeader">Customer</td>'+
'<td class="black">'+d.customer+'</td>'+
'<td class="dropHeader">Value</td>'+
if (d.country !== "usd") {
'<td class="red">'+d.value+'</td>'+
} else {
'<td class="black">'+d.value+'</td>'+
}
'<td class="dropHeader">Comments</td>'+
'<td class="black"><input onblur="submitComments(this.value)" type="text"><br>'+d.comments+'</input></td>'+
'</tr>'+
'</table>'+
'</div>';
}
添加if
子句时代码失败。这是语法问题吗?我如何打破HTML一秒钟,以便我可以在回报中添加额外的JavaScript?我的目标是在线路货币为美元时添加td类red
,但我无法弄清楚如何使其工作。
答案 0 :(得分:5)
使用Ternary operator,例如:
... etc ...
+
'<td class="dropHeader">Value</td>'
+
(d.country !== "usd" ? '<td class="red">'+d.value+'</td>' : '<td class="black">'+d.value+'</td>')
+
'<td class="dropHeader">Comments</td>'
+
... etc ...
答案 1 :(得分:4)
你的错误是因为,从本质上讲,你做的相当于:
return "Something" + if(condition){}else{} + " else";
这是Javascript的非法语法。
这有两个解决方案;第一种是使用内联if语句,如下:
return "Something" + (x == y ? "output if succeeded" : "output if not") + ".";
所以你的内联如果会变成:
+ (d.country !== "usd" ? '<td class="red">'+d.value+'</td>' : '<td class="black">'+d.value+'</td>') +
或者对于第二个解决方案,您可以将输出字符串附加到其中,如下所示:
function format(d){
var output = "";
output += "Testing code";
if(d.country !== "usd"){
output += "Woo we succeeded";
}
output += " more testing <i>code<i>.";
return output;
}
答案 2 :(得分:1)
这样做
Thread.Abort()
答案 3 :(得分:1)
改变这个:
if (d.country !== "usd") {
'<td class="red">'+d.value+'</td>'+
} else {
'<td class="black">'+d.value+'</td>'+
}
对此:
+((d.country !== "usd")?'<td class="red">'+d.value+'</td>':'<td class="black">'+d.value+'</td>')+