我在使用JavaScript編寫腳本時遇到了一件奇怪的事情,而且我不完全確定我的理解方式是否正確。 基本上我想單擊一個按鈕,它會出現另一個按鈕,如果第二個按鈕不是由第一個我需要退出循環提出的。在第一次調用時沒有檢索到按鈕元素
var intervalID = window.setInterval(myfunc,1000);
function t(){
console.log('quit');
clearInterval(intervalID);
}
function myfunc(){
//first button
document.getElementsByClassName('hit')[0].click();
//try to retrieve the second one
var el = document.getElementsByClassName('hit_ok');
console.log(el.length);
//if it exists click it
if (el.length == 1){
el[0].click();
//otherwise exit
} else {
console.log('ready to quit');
window.setTimeout(t,50);
}
}
我的問題是,在一審中始終返回0,如果語句 我也試過如下:
function myfunc(){
document.getElementsByClassName('hit')[0].click();
var el = document.getElementsByClassName('hit_ok');
console.log(el);
if (el != null){
el[0].click();
} else {
console.log('ready to quit');
window.setTimeout(t,50);
}
}
,事實上它返回:
[] - >長度:0__proto__:HTMLCollection
VM3642:1 Uncaught TypeError:無法讀取undefined屬性'click'
代替:
[span.hit_ok]
這意味着在第一次不能檢索按鈕。 顯然第二個按鈕就在那裏,因爲第一個按鈕被按下了。
HTML代碼:
//first button
<div class="try">
<input type="hidden" id="isHit" value="">
<a href="javascript:void(0);" class="hit">Try</a>
</div>
//second button
<div class="msgbox_button">
<span class="hit_ok" onclick="remove();">OK</span>
</div>
任何想法?當時沒有創建
intervalID=window.setInterval();
這是有效的JS,但腳本啓動在頁面加載之前,至極意味着DOM:
問候,
後循環一件奇怪的事是,它甚至沒有在其他循環進入。我知道我錯過了一些東西。 – user217354
你的HTML?看起來你已經搞砸了... –
你可以請添加一個工作示例,說明你的問題。 –