HTML 字符串文字中的标签未正确传递给 JS 方法
HTML tags inside string literal are not being passed to JS method correctly
所以我已经从 JSON 文件中读取了。我可以很容易地得到名字值和 photo_url 值以及每个“人”的一些个人简介。
https://codepen.io/lpmurray16/pen/ExvpQgP
这是 JSON 所在的位置:
https://bensdemo.prod.equisolve-dev.com/api/v1/eq-test
所以在上面链接的 codepen 中找到的 JavaScript 文件中(很抱歉每次我保存时它都会格式化...),但是第 23-40 行是一个调用 onClick 的函数class“卡片”和下面这些行中的按钮标签...我将参数作为 ${person.arg} 传递给此函数,您可以看到它对某些人有效,因为当您单击前三个人,它会打开每个位置都有正确信息的模态。但是在 JSON 中的 person.bio 之一中,它由于锚标记上的定界符而中断 --> ".
我是不是遗漏了什么明显的东西?这是我在不扯掉头发的情况下得到的最接近的结果。并且错误消息只是 HTML 文件第 1 行中未捕获的“SyntaxError:无效或意外标记”。哪个根本没有帮助?我是不是漏掉了结束标签之类的东西?
document.getElementById("cards").innerHTML = `
${allData.map(function (person) {
let regex = /[_\*#"]/g;
return `
<div class="card flex-col"
onClick="changeModalContent('${person.name.replace(regex,"")}',
'${person.title}','${person.photo_url}', '${person.bio}'); modal.open();">
<div class="card_top">
<img class="prof_pic" src="${person.photo_url}"
alt="${person.name.replace(regex, "")}"/>
</div>
<div class="card_bottom flex-col">
<h3 class="prof_name">${person.name.replace(regex, "")}</h3>
<p class="prof_title">${person.title}</p>
<button class="view_button"
onClick="changeModalContent('${person.name.replace(regex,"")}',
'${person.title}', '${person.photo_url}', '${person.bio}');
modal.open();">View Bio
</button>
</div>
</div>
`;
}).join("")}
`;
问题不在于锚标记中的双引号,而是源 json 中的 \r\n
。您可以看出,因为 Sam Darnold 的条目中没有任何 "
。您需要先清洁笔架 return 并换行。
将您的正则表达式更新为:
let regex = /[_\*#"\r\n]/g;
然后替换两个实例:
${person.bio}
与:
${person.bio.replace(regex, "")}
现在您的代码将正确呈现,正如您在 working codepen 中看到的那样。
所以我已经从 JSON 文件中读取了。我可以很容易地得到名字值和 photo_url 值以及每个“人”的一些个人简介。
https://codepen.io/lpmurray16/pen/ExvpQgP
这是 JSON 所在的位置: https://bensdemo.prod.equisolve-dev.com/api/v1/eq-test
所以在上面链接的 codepen 中找到的 JavaScript 文件中(很抱歉每次我保存时它都会格式化...),但是第 23-40 行是一个调用 onClick 的函数class“卡片”和下面这些行中的按钮标签...我将参数作为 ${person.arg} 传递给此函数,您可以看到它对某些人有效,因为当您单击前三个人,它会打开每个位置都有正确信息的模态。但是在 JSON 中的 person.bio 之一中,它由于锚标记上的定界符而中断 --> ".
我是不是遗漏了什么明显的东西?这是我在不扯掉头发的情况下得到的最接近的结果。并且错误消息只是 HTML 文件第 1 行中未捕获的“SyntaxError:无效或意外标记”。哪个根本没有帮助?我是不是漏掉了结束标签之类的东西?
document.getElementById("cards").innerHTML = `
${allData.map(function (person) {
let regex = /[_\*#"]/g;
return `
<div class="card flex-col"
onClick="changeModalContent('${person.name.replace(regex,"")}',
'${person.title}','${person.photo_url}', '${person.bio}'); modal.open();">
<div class="card_top">
<img class="prof_pic" src="${person.photo_url}"
alt="${person.name.replace(regex, "")}"/>
</div>
<div class="card_bottom flex-col">
<h3 class="prof_name">${person.name.replace(regex, "")}</h3>
<p class="prof_title">${person.title}</p>
<button class="view_button"
onClick="changeModalContent('${person.name.replace(regex,"")}',
'${person.title}', '${person.photo_url}', '${person.bio}');
modal.open();">View Bio
</button>
</div>
</div>
`;
}).join("")}
`;
问题不在于锚标记中的双引号,而是源 json 中的 \r\n
。您可以看出,因为 Sam Darnold 的条目中没有任何 "
。您需要先清洁笔架 return 并换行。
将您的正则表达式更新为:
let regex = /[_\*#"\r\n]/g;
然后替换两个实例:
${person.bio}
与:
${person.bio.replace(regex, "")}
现在您的代码将正确呈现,正如您在 working codepen 中看到的那样。