我试图查看HTML元素是否在JSON文件中有匹配的文本,然后根据JSON更改页面上的链接。例如,如果p标签包含纽约市(切尔西),请将href更改为/ lorem / ipsum1。我认为我的逻辑是正确的,但我知道我没有正确执行它。
另请注意,在p标记内,位置名称之前和/或之后可能有空格。
非常感谢您的见解!
https://codepen.io/anon/pen/yjPZaK
JSON
[
{
"Store": "New York City (Upper East Side)",
"URL": "/lorem/ipsum1"
},
{
"Store": "Lincoln Square",
"URL": "/lorem/ipsum2"
},
{
"Store": "New York",
"URL": "/lorem/ipsum3"
},
{
"Store": "New York City (Chelsea)",
"URL": "/lorem/ipsum4"
},
{
"Store": "Harlem",
"URL": "/lorem/ipsum5"
}
]
HTML
<div class="container">
<p> New York City (Chelsea) </p>
<a href="/original/link">Link</a>
</div>
JS
$(function() {
$.ajax({
type: "GET",
url: "https://api.myjson.com/bins/7lu0y",
async: false,
success: function(data){
if ($('.container p').text() == data.Store) {
$('.container a').attr('href', data.URL);
}
}
});
});
答案 0 :(得分:1)
使用一些新的JavaScript。您可以将当前success
方法的内容更改为此类内容。
const dataMap = new Map(data.map(item => [item.Store, item.URL]));
const text = $('.container p').text().trim();
if (dataMap.has(text)) { $('.container a').attr('href', dataMap.get(text)); }