2017-04-15 5 views
-1

ランダム問題:私は、アレイは、私はページを更新するたびにシャッフルされて見ることができますコンソールでのJavaScript/jQueryの:配列私はこのようなDOM要素を持つ配列を、ランダム化しようとしている

var allTargets=$('#target1, #target2, #target3, #target4'); 
var randomTargets=null; 
randomTargets = allTargets[Math.floor(Math.random() * allTargets.length)]; 
console.log(randomTargets); 

。しかし、randomTargets変数を使ってメソッドをトリガしようとすると、プログラムがクラッシュします。このような何か:

randomTargets.hide(); 

しかし、確率変数せずに、プログラムが動作します。

var allTargets=$('#target1, #target2, #target3, #target4'); 
allTargets.hide(); 

私が間違って何をしているのですか?

+1

の長さに0から乱数に基づいてランダムな要素を非表示にしないであろう、このことを意味あなたは*(束縛されていない)jQueryオブジェクトからランダムな要素を選んでいます。 –

答えて

1

おそらく、あなたはコンソールでは、私は、配列が、私はリフレッシュするたびにシャッフルされて見ることができます*シャッフルちょうどallTargets

var $allTargets = $('#target1, #target2, #target3, #target4'); 
var rnd = Math.floor(Math.random() * allTargets.length); 
$allTargets.eq(rnd).hide(); 
+1

ありがとう、その働いた:) – glassraven

0

「配列のような」jQueryオブジェクトにアクセスすると、hide()メソッドを持たないネイティブDOM要素が得られます。

各jQueryオブジェクトは、アレイになりすまし、私たちの代わりに、リストの項目で取得するために 配列デリファレンス演算子を使用することができますhttps://api.jquery.com/get/

のドキュメントから:

console.log($("li")[ 0 ]); 

だからあなたのケースでは$(randomTargets).hide();が動作します。

+0

まあ、プログラムはまだクラッシュします – glassraven

関連する問題