Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/jQuery:数组随机问题_Javascript_Jquery_Arrays - Fatal编程技术网

JavaScript/jQuery:数组随机问题

JavaScript/jQuery:数组随机问题,javascript,jquery,arrays,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.hide(); 在控制台中,我可以看到每次刷新

我正在尝试使用DOM元素随机化数组,如下所示:

var allTargets=$('#target1, #target2, #target3, #target4');
var randomTargets=null;
randomTargets = allTargets[Math.floor(Math.random() * allTargets.length)];
console.log(randomTargets);
randomTargets.hide();
在控制台中,我可以看到每次刷新页面时数组都被洗牌。但是当我试图用randomTargets变量触发一个方法时,程序崩溃了。大概是这样的:

var allTargets=$('#target1, #target2, #target3, #target4');
var randomTargets=null;
randomTargets = allTargets[Math.floor(Math.random() * allTargets.length)];
console.log(randomTargets);
randomTargets.hide();
但如果没有随机变量,程序可以工作:

var allTargets=$('#target1, #target2, #target3, #target4');
allTargets.hide();
我做错了什么?

访问jQuery对象“像数组一样”会得到一个本机DOM元素,它没有
hide()
方法

每个jQuery对象还伪装成一个数组,因此我们可以使用 改为获取列表项的数组解引用运算符:

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

所以在您的例子中,
$(randomTargets).hide()将起作用。

也许您的意思是,它不会随机移动,而只是根据从0到allTargets长度的随机数隐藏一个随机元素

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

在控制台中,我可以看到每次刷新页面时数组都会被洗牌。“不,没有任何东西在洗牌(这是一个jQuery对象,不是数组)。您正在从(未洗牌的)jQuery对象中挑选一个随机元素。好吧,程序仍然崩溃