JavaScript / jQuery:数组随机问题

时间:2017-04-15 12:29:45

标签: javascript jquery arrays

我试图用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();

我做错了什么?

2 个答案:

答案 0 :(得分:1)

也许你的意思是这不会改变,只是隐藏一个基于从0到所有目标长度的随机数的随机元素

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

答案 1 :(得分:0)

访问jQuery对象"像数组"为您提供了一个没有hide()方法的原生DOM元素。

来自https://api.jquery.com/get/

的文档
  

每个jQuery对象也伪装成一个数组,所以我们可以使用   数组解除引用运算符来获取列表项:

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

因此,在您的情况下$(randomTargets).hide();将起作用。