如果JSON中存在元素的文本值,请执行此操作

时间:2018-05-07 21:30:14

标签: jquery html json

我试图查看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);
    }

  }
});

});

1 个答案:

答案 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)); }