如何在字符串中使用运算符三元组?

时间:2017-06-16 12:26:30

标签: javascript string

考虑我尝试的以下代码段:

<script>
    for (var key in photoList) {
        if(key == photoList[key].id) {
            var res =  `<li id="thumbnail-`+key+`">
                            <div class="thumbnail `+(product.photo == photoList[key].id)+` ? 'thumbnail-main' : ''">
                                ...
                            </div>
                        </li>`;
        }
    }
</script>

我尝试这样,但它不起作用?我该怎么办?

4 个答案:

答案 0 :(得分:7)

当你用一个带有严重标记(`)的字符串括起来时,它允许在字符串连接上插入表达式,称为template literal,这是ES2015中的新功能。您的三元运算符是表达式,因此您可以在字符串插值中使用${expr}表示法来插入表达式。由于您已经在使用模板文字,因此没有理由进行连接,因此:

var res = `<li id="thumbnail-${key}">
             <div class="thumbnail ${product.photo == photoList[key].id ? 'thumbnail-main' : ''}>
               ...
             </div>
           </li>`;

您想要使用表达式的字符串连接的任何地方,您只需使用插值。所以而不是:

'1 + 1 = ' + (1 + 1)

你可以这样做:

`1 + 1 = ${1 + 1}`

因为1 + 1是表达式。

答案 1 :(得分:0)

你做得很好,但缺少字符串连接

<script>
for (var key in photoList) {
    if(key == photoList[key].id) {
        var res =  `<li id="thumbnail-`+key+`">
                        <div class="thumbnail `+(product.photo == photoList[key].id ? 'thumbnail-main' : '') + `">
                            ...
                        </div>
                    </li>`;
    }
}

答案 2 :(得分:0)

应该是:

<script>
    for (var key in photoList) {
        if(key == photoList[key].id) {
            var res =  '<li id="thumbnail-'+key+'"><div class="thumbnail ' + ((product.photo == photoList[key].id)+ ? 'thumbnail-main' : '') + ">
                                ...
                            </div>
                        </li>';
        }
    }
</script>

答案 3 :(得分:0)

for (var key in photoList) {
  if (key === photoList[key].id) {
    var res =  `
      <li id="thumbnail-${key}">
      <div class="thumbnail ${
        (product.photo === photoList[key].id) ? 'thumbnail-main' : ''
      }">
      ...
      </div>
      </li>`;
  }
}