JavaScript/jQuery:数组随机问题
我正在尝试使用DOM元素随机化数组,如下所示: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(); 在控制台中,我可以看到每次刷新
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对象中挑选一个随机元素。好吧,程序仍然崩溃