我有一个json文件是这样的..。
[
{
"id": "01",
"image": "_img/speakers/2019/Abigail L.jpg",
"organization": "Mumsnet",
"name": "Abigail Lebrecht",
"para": "Stopwords personalisation and Text cleaning at Mumsnet",
"slides": "#"
},
{
"id": "02",
"image": "_img/speakers/2019/Alexis Iglauer.jpg",
"organization": "PartnerRe",
"name": "Alexis Iglauer",
"para" : "Medical underwriting triage: An end-to-end machine learning case study",
"slides": "assets/slides/Thurs 12 Sept/Stream 3 session 3/Alexis Iglauer.pptx"
},
{
"id": "03",
"image": "_img/speakers/2019/Amanda Beedham.jpg",
"organization": "RSA Insurance",
"name": "Amanda Beedham",
"para": "Harnessing AI to Create Insight from Text",
"slides": "assets/slides/Weds 11 Sept/Stream 3 session 2/AmandaBeedham_RSA.pptx"
}
]该文件实际上要大得多,但是有一些id将幻灯片键值设置为#....
我使用JavaScript将一堆HTML注入到如下所示的网页中:
// get json file from directory
fetch("_img/speakers/speakers2019.json")
// store json data in res variable
.then(res => res.json())
// loop through json array and output mark up to target
// in index.html on line 447
.then(speakerArr => {
var div = document.querySelector('.row_tile');
for(var i = 0; i < speakerArr.length; i++) {
div.innerHTML += `<div class="col-lg-3 col-xs-6">
<div class="hover-element member member-2" data-title-position="center,center">
<div class="hover-element__initial">
<img src="${speakerArr[i].image}" />
</div>
<div class="hover-element__reveal fade-transiton" data-overlay="9">
<div class="boxed">
<h6>${speakerArr[i].organization}</h6>
<h5>${speakerArr[i].name}</h5>
<p class="small-text">${speakerArr[i].para}</p>
<a class="modalbutton" href="${speakerArr.slides}" download>Slides</a>
</div>
</div>
</div>
</div>`;
}
});但是这个循环遍历json并显示json中所有条目的按钮<a class="modalbutton" href="${speakerArr.slides}" download>Slides</a>。我遇到的问题是,并不是所有的按钮都有指向的链接;我如何修改这段代码,这样它就可以在任何地方(键/值是# )都显示ok,不要显示按钮。
到目前为止,我已经尝试过这样做:
for(var i = 0; i < speakerArr.length; i++) {
div.innerHTML += `<div class="col-lg-3 col-xs-6">
<div class="hover-element member member-2" data-title-position="center,center">
<div class="hover-element__initial">
<img src="${speakerArr[i].image}" />
</div>
<div class="hover-element__reveal fade-transiton" data-overlay="9">
<div class="boxed">
<h6>${speakerArr[i].organization}</h6>
<h5>${speakerArr[i].name}</h5>
<p class="small-text">${speakerArr[i].para}</p>
if(speakerArr[i].slides === "#"){
<a class="modalbutton" href="${speakerArr[i].slides}" download>Slides</a>
} else {
<a class="modalbutton disabled" href="${speakerArr[i].slides}" download>Unavailable</a>
}
</div>
</div
</div>
</div>`;
}
});但是这不像预期的那样工作,我们如何在中获得if/ get
理想情况下,我不想在任何地方显示一个按钮-- json中的键/值是# --这怎么可能呢?
发布于 2019-09-30 11:35:23
我建议添加另一个具有动态按钮的变量:
var btn = ``;
for (var i = 0; i < speakerArr.length; i++) {
if (speakerArr[i].slides === "#"){
btn = `<a class="modalbutton" href="${speakerArr[i].slides}" download>Slides</a>`;
} else {
btn = `<a class="modalbutton disabled" href="${speakerArr[i].slides}" download>Unavailable</a>`;
}
div.innerHTML += `<div class="col-lg-3 col-xs-6">
<div class="hover-element member member-2" data-title-position="center,center">
<div class="hover-element__initial">
<img src="${speakerArr[i].image}" />
</div>
<div class="hover-element__reveal fade-transiton" data-overlay="9">
<div class="boxed">
<h6>${speakerArr[i].organization}</h6>
<h5>${speakerArr[i].name}</h5>
<p class="small-text">${speakerArr[i].para}</p>
${btn}
</div>
</div>
</div>
</div>`;
}更新:,扩展@Bek的答案,下面是如何使用三元操作符
for (var i = 0; i < speakerArr.length; i++) {
div.innerHTML += `<div class="col-lg-3 col-xs-6">
<div class="hover-element member member-2" data-title-position="center,center">
<div class="hover-element__initial">
<img src="${speakerArr[i].image}" />
</div>
<div class="hover-element__reveal fade-transiton" data-overlay="9">
<div class="boxed">
<h6>${speakerArr[i].organization}</h6>
<h5>${speakerArr[i].name}</h5>
<p class="small-text">${speakerArr[i].para}</p>
${speakerArr[i].slides == '#' ? `<a class="modalbutton" href="${speakerArr[i].slides}" download>Slides</a>` : `<a class="modalbutton disabled" href="${speakerArr[i].slides}" download>Unavailable</a>`}
</div>
</div>
</div>
</div>`;
}发布于 2019-09-30 11:28:40
在您的情况下,这应该是可行的:
for(var i = 0; i < speakerArr.length; i++) {
div.innerHTML += `<div class="col-lg-3 col-xs-6">
<div class="hover-element member member-2" data-title-position="center,center">
<div class="hover-element__initial">
<img src="${speakerArr[i].image}" />
</div>
<div class="hover-element__reveal fade-transiton" data-overlay="9">
<div class="boxed">
<h6>${speakerArr[i].organization}</h6>
<h5>${speakerArr[i].name}</h5>
<p class="small-text">${speakerArr[i].para}</p>`;
if(speakerArr[i].slides !== "#"){
div.innerHTML += `<a class="modalbutton" href="${speakerArr[i].slides}" download>Slides</a>`;
}
div.innerHTML += `</div>
</div>
</div>
</div>`;
}发布于 2019-09-30 11:54:03
尝试使用这样的三元运算符:
`${speakerArr[i].slides == '#' ? '<a class="modalbutton" href="${speakerArr[i].slides}" download>Slides</a>' : '<a class="modalbutton disabled" href="${speakerArr[i].slides}" download>Unavailable</a>'}`https://stackoverflow.com/questions/58166905
复制相似问题