2016-08-25 31 views
0

我在使用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:

問候,

+0

後循環一件奇怪的事是,它甚至沒有在其他循環進入。我知道我錯過了一些東西。 – user217354

+0

你的HTML?看起來你已經搞砸了... –

+3

你可以請添加一個工作示例,說明你的問題。 –

回答

0

你做什麼。

怎麼辦:

window.onload=function(){ 
var intervalID=window.Interval(...); 
}; 

這將啓動頁面加載

+0

代碼插入在url欄中,因此該頁面已完全加載。 – user217354

相關問題