2017-04-15 68 views
-1

我試圖用隨機DOM元素的數組,像這樣:的JavaScript/jQuery的:陣列隨機問題

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

*長度的隨機元素在控制檯中,我可以看到每一個我刷新時間陣列洗牌「*不,沒有什麼是洗牌(這是一個jQuery對象,而不是一個數組),你*從(取消混合的)jQuery對象中選取一個隨機元素 –

回答

1

也許你的意思是這裏面會不會洗牌,但只是隱藏基於一個隨機數從0到allTargets

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

謝謝,那工作:) – glassraven

0

訪問一個jQuery對象「像一個數組」給你一個本地DOM元素沒有hide()方法。

從文檔在https://api.jquery.com/get/

每個jQuery對象也僞裝成一個數組,這樣我們就可以使用 陣列對其操作來獲得在列表項改爲:

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

所以你的情況$(randomTargets).hide();將工作。

+0

好吧,程序崩潰了 – glassraven