我正在尝试修改下面的脚本以单击网站上如下所示的按钮:
<button id="checkPrice-02070" onclick="checkPrice(02070,null); return false;" class="orangeDark">
<span>check price</span>
</button>
我正在使用下面的代码。到目前为止,页面似乎一直在重新加载;没有其他事情发生。
对新人有什么建议吗?
(function () {
window.addEventListener("load", function (e) {
clickConfirmButton()
}, false);
})();
function clickConfirmButton() {
var buttons = document.getElementsByTagName('button');
var clicked = false;
for (var index = 0; (index < buttons.length); index++) {
if (buttons[index].value == "check price") {
buttons[index].click();
clicked = true;
break;
}
}
if (!clicked) {
setTimeout("window.location.reload()", 300 * 1000);
}
}
最佳答案
一个<button>
value
不是可见文本。您想要搜索textContent
.
但是:
如果该示例 HTML 正确,您最好搜索以
checkPrice
开头的 ID。 。请参阅下面的代码。如果找不到按钮,您确定要重新加载吗?如果它是通过 AJAX 添加的,这不是最好的方法。请参阅this answer .
不要使用
setTimeout
带有一个像这样的字符串(用于评估)参数。请参阅下面的代码。您不需要将代码包装在匿名函数中。
无论如何,鉴于示例 HTML,这应该可行:
window.addEventListener ("load", clickConfirmButton, false);
function clickConfirmButton (zEvent) {
var button = document.querySelector ("button[id^='checkPrice']");
if (button) {
button.click ();
}
else {
setTimeout (function () { location.reload(); }, 300 * 1000);
}
}
<小时/>
<小时/>
要检查按钮文本,请使用:
function clickConfirmButton (zEvent) {
var buttons = document.querySelectorAll ("button[id^='checkPrice']");
var clicked = false;
for (var index = 0, numBtn = buttons.length; index < numBtn; ++index) {
if (/check price/i.test (buttons[index].textContent) ) {
buttons[index].click();
clicked = true;
break;
}
}
if (!clicked) {
setTimeout (function () { location.reload(); }, 300 * 1000);
}
}
关于javascript - 如何点击带有特定文本的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112186/