2017-10-22 12 views
1

JavaScriptが初めてのので、自動クリッカースクリプトを作成しようとしています。問題は、デベロッパーコンソールでスクリプトを実行すると、「button.clickは関数ではありません」というエラーが表示され、エラーは永遠に、コンソールだけでループします。私のコードは以下の通りです:なぜ私のオートクリッカースクリプトはこのUncaught TypeErrorを取得していますか?

var button = document.getElementsByClassName("btn btn-default"); 
setInterval(function(){ 
    button.click() 
},200) 

どうすればいいですか?

答えて

1

specificationのため、getElementsByClassNameは、すべての与えられたクラス名を持つすべての子要素の配列のようなオブジェクトを返します。したがって、あなたの "ボタン"はclickプロパティを持つことができませんでした。それは配列です。次の例のように、要素を取るために最初の要素を必要とする:

var button = document.getElementsByClassName("btn btn-default")[0]; 

しかし、私は言うでしょう、あなたがボタンのクリックハンドラのロジックを持っていて、いくつかのタイマーでそれを実行したい場合は、最良の方法関数にそのロジックを抽出することであろう(のはそれonClickに名前を付けましょう)、代わりにクリックイベントエミュレーションのタイマーによって、この機能を実行します(これはまた、あなたがonclickのattrのとハンドラを結合しないことを意味し

var onClick = function() { 
    console.log("click!"); 
    // your click hanlder logic 
}; 

setInterval(onClick, 200); 

button.addEventListener("click", onClick); 

<button onclick="onClick()">を)であるが、addEventListenerでは、これはイベント処理を提供するための好ましい方法です。

+0

私はこのスクリプトをやってみました、それが動作しませんでした: VARボタン= document.getElementsByClassName( "btn-デフォルト ")[0]; setInterval(function(){ button.click() } 「これは機能しませんでした」とは、今すぐボタンをクリックすると、まったくクリックしないということです下のGIFに見られる。 https://gyazo.com/fc9d144d61882701b98bb116bacb3463 –

+0

@IcyJakeあなたの状況に完全対応するための答えを更新しました。 – dhilt

+0

@ - dhilt私はそれをオートクリッカーにする方法をとても混乱しています。私はJavaScriptで全く新しいです。もう少し手伝ってもらえますか?申し訳ありませんが、私は迷惑や何かをしている。 :u –

2

document.getElementsByClassNameが配列で、この例をチェック返します

<button class="btn-default" onclick="console.log('clicked');"></button> 
 
<script> 
 
var button = document.getElementsByClassName("btn-default")[0]; 
 
setInterval(function(){ 
 
    button.click() 
 
},1000) 
 
</script>

関連する問題