搜索元素的内容,然后单击其父元素

时间:2018-06-29 22:39:56

标签: javascript jquery html google-chrome-extension

我正在尝试创建一个扩展,该扩展单击用户指定价格的商品。这是相关的popup.html:

<input style="display:none" /><input type="text" id="userInput" value='' />
<button id="clickme">Run</button>

单击“ clickme”后,它将运行以下popup.js:

document.getElementById('clickme').addEventListener('click', function() {
 var price = '$'+ document.getElementById("userInput").value+".00";
 alert(price);
 $("p:contains("price")").parentNode.click();
});

如果您在表格中键入所需的价格为48,它将返回警报,其值为$ 48.00。

然后它会shuold单击该价格的项目,但是当前不起作用。这是我要在其上进行扩展的网站相关部分的代码(不是我的网站):

<div class="grid__item wide--one-fifth large--one-quarter medium-down--one-half">
 <a href="/collections/1seventeenweek7/products/copy-of-supreme-dazzle-warm- up-top-red" class="grid-link text-center">
  <p class="grid-link__title">Supreme Corner  Cap Light Blue</p>
  <p class="grid-link__meta">
   <span class="visually-hidden">Regular price</span>
   $48.00
  </p>
 </a>
</div>

我试图让它搜索包含$ 48.00的p元素,然后单击作为父元素的a元素,但这当前不起作用。我究竟做错了什么? -谢谢

1 个答案:

答案 0 :(得分:-1)

您在这里。这将起作用!

document.getElementById('clickme').addEventListener('click', function() {
  var price = '$'+document.getElementById('userInput').value+'.00'
  var metas = document.getElementsByClassName('grid-link__meta')
  alert(price)
  for (let i = 0; i < metas.length; i++) {
    if (metas[i].innerHTML.includes(price)) metas[i].parentNode.click()
    break
  }
})

我个人非常想使用类似于以下内容的东西,但我忘记了getElementsByClassName不会返回数组,而是返回NodeList对象。

var price = '$'+document.getElementById('userInput').value+'.00'
var metas = document.getElementsByClassName('grid-link__meta')
var match = metas.find((curr) => curr.innerHTML.includes(price))
match.parentNode.click()