javascript - javascript中HTML字符串与三元运算符的连接
问题描述
我正在尝试使用 + 运算符连接 HTML 字符串,并且我正在使用三元运算符来检查条件并在 div 元素中使用适当的类名,但是三元运算符给了我错误的输出。我不知道我在这里错过了什么。谁能解释一下?
我的代码如下所示:
fetch("./data/projects.json")
.then(res => {
return res.json();
})
.then(jsonResponse => {
var carouselItem = ''
jsonResponse.data.map((image, index) => {
carouselItem += '<div class="carousel-item ' + index === 0 ? 'a' : 'b' + '">'
})
console.log(carouselItem);
})
.catch(err => {
console.log(err);
})
运行此代码时,我得到以下输出
b">b">b">b">b">
我希望输出应该是
<div class="carousel-item a"><div class="carousel-item b"><div class="carousel-item b"><div class="carousel-item b"><div class="carousel-item b">
解决方案
+
具有比条件运算符 (4)更高的运算符优先级(14)。您当前的代码相当于
carouselItem += ('<div class=carousel-item>' + index === 0) ? 'a' : 'b'
不仅比较错误,分配也错误。改成:
carouselItem += '<div class="carousel-item ' + (index === 0 ? 'a' : 'b') + '"> </div>';
以便正确分组条件。您可能还想结束<div
您开始的事情。此外,.map
仅应在您要创建新数组时使用。如果您只需要副作用,请使用forEach
.
jsonResponse.data.forEach((image, index) => {
carouselItem += '<div class="carousel-item ' + (index === 0 ? 'a' : 'b') + '"> </div>';
});
如果需要,您可以在此处使用.map
,但如果是这样,请返回<div>
您想要的,然后将其连接在一起:
const carouselItem = jsonResponse.data.map((image, index) => (
'<div class="carousel-item ' + (index === 0 ? 'a' : 'b') + '"> </div>'
))
.join('');
推荐阅读
- angular - 仅获取特定页面的列表数据
- java - 如何根据用户在 EditText 中键入的内容不断更新字符串?
- php - (PHP) 'If' 语句仅在一侧回显,它会更改为 'else' 并根据添加到购物车的产品更改回 'if'
- python - 如何从文件中读取带引号的字符串并在不带引号的情况下写入?
- python - 不可能将货币价值绘制成图
- c# - VB.Net Winform Radiobutton 的所有属性都设置为 ReadOnly = True
- python - 完成子图的步骤
- python - 比较不同年份的相同月份值
- python - 使用存储在类中的 JSON 数据?
- javascript - 包含内容和来源的脚本如何工作?