我正在尝试创建一个扩展,该扩展单击用户指定价格的商品。这是相关的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元素,但这当前不起作用。我究竟做错了什么? -谢谢
答案 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()