2016-08-25 10 views
0

JavaScriptでスクリプトを作成する際に奇妙なことが起こりました。理解するのが正しいかどうかは完全にはわかりません。 基本的には、もう1つボタンをクリックして、最初に2番目のボタンが表示されない場合は、ループを終了する必要があります。最初の呼び出し時にボタン要素が取得されない

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未キャッチタイプエラー:未定義のプロパティ 'click'を読み取ることができません

初めてそれがボタンを取得傾けることを意味し

[span.hit_ok]

の代わりに。 明らかに、最初のボタンが押されてから2番目のボタンがあります。

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> 

任意のアイデア?あなたは何

よろしく、

+0

ロードした後にループを開始します。私は何かが欠けていることを知っている。 – user217354

+0

あなたのHTMLは?あなたがそこにsthを混乱させたように見えます... –

+3

あなたの問題を示す実例を追加してください。 –

答えて

0

intervalID=window.setInterval(); 

これが有効なjsのですが、スクリプトは、ページが読み込まれた前を開始しているが、ウィッヒはDOMを意味は、その時点で作成されていません。

は何をします

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

これは、好奇心旺盛なことはそれも他のループに入らないということであるページが

+0

コードがURLバーに挿入され、ページが既に完全にロードされています。 – user217354

関連する問題