javascript:如何在 html 中使用三元表达式渲染?

Posted

技术标签:

【中文标题】javascript:如何在 html 中使用三元表达式渲染?【英文标题】:javascript: How to use ternary expression render in html? 【发布时间】:2020-12-22 07:57:11 【问题描述】:

这是一个javascript三元运算符代码。

'<p>balance>0?(Stock: balance):<span class="text-danger">Not Available</span></p>'

为了在 html 中正确呈现,我尝试了很多方法,但是没有运气。

输出:balance&gt;0?(Stock: balance):&lt;span class="text-danger"&gt;Not Available&lt;/span&gt; 预期输出:(库存:23)或不可用(红色)

提前谢谢你!

以下是用于使用 Bloodhound 插件的部分代码。

var prodName_typehead = 
                    name: 'prod_name',
                    displayKey: 'name',
                    hint: (App.isRTL() ? false : true),
                    source: item.ttAdapter(),
                    limit: 20,
                    templates: 
                       suggestion: Handlebars.compile([
                            '<div class="media">',
                                  '<div class="pull-left">',
                                      '<div class="media-object">',
                                          '<img src="thumb"  />',
                                      '</div>',
                                  '</div>',
                                  '<div class="media-body">',
                                      '<p><strong>name</strong></p>',
                                      '<p>desc</p>',
                                       '<p>balance>0?(Stock: balance):<span class="text-danger">Not Available</span></p>',
                                  '</div>',
                            '</div>',
                          ].join(''))
                    
                  ;

【问题讨论】:

用``来写表达式。 【参考方案1】:

我相信你想要的是这样的:

`<p>$balance>0?`Stock: $balance`:`<span class="text-danger">Not Available</span>`</p>`

当我运行这个时:

balance = 0
`<p>$balance>0?`Stock: $balance`:`<span class="text-danger">Not Available</span>`</p>`

我明白了:

"<p><span class="text-danger">Not Available</span></p>"

当我运行这个时:

balance = 1
`<p>$balance>0?`Stock: $balance`:`<span class="text-danger">Not Available</span>`</p>`

我明白了:

"<p>Stock: 1</p>"

我正在使用 javascript 模板文字来完成您要进行的变量替换。

(基本上,您遇到的问题是您需要打勾(`)而不是双引号(“)来制作模板文字,正如 NarayaN 在他的评论中提到的那样,在第一个括号之前的 $ 开始嵌入 javascript 和然后在第一个字符串选项中为 balance 嵌套相同的逻辑。)

【讨论】:

我尝试了您建议的方法,但它不起作用 -> 709 Uncaught ReferenceError: balance is not defined. 如果compile 步骤的输入需要双括号,正确的解决方案应该是:&lt;p&gt;$balance&gt;0?Stock: balance:不可用&lt;/p&gt; 错误消失但仍无法正常工作。输出显示如下 $balance>0?Stock: balance:Not Available @user610983 抱歉,我之前的评论可能格式不正确,您能否确认您输入的内容(刻度在这里不起作用,所以用刻度替换我写的单引号):'

$ balance>0?'库存:balance':'不可用'

'
是的。我用刻度替换了单引号并添加了双括号。这次我得到一个错误:意外字符串。

以上是关于javascript:如何在 html 中使用三元表达式渲染?的主要内容,如果未能解决你的问题,请参考以下文章

三元运算符如何比较 JavaScript 中的字符和数字?

如何在剃刀中使用三元运算符(特别是在 HTML 属性上)?

带有对象的Javascript三元运算符

JavaScript 速记三元运算符

JavaScript 如何解析链式三元表达式?

javascript React - 三元运算符或jsx中的条件包含带反应的html