Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 不要在数组中请求此元素_Javascript_Jquery_Html_Arrays - Fatal编程技术网

Javascript 不要在数组中请求此元素

Javascript 不要在数组中请求此元素,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我想做一个函数,除了数组中当前单击的函数。 意思是我有这样的东西: cubesmixed = [array, with, 145, elements] cubesmixed[54].click(function() { for(var i = 0; i < 145; i++) { var randomnumber=Math.floor(Math.random()*500000); cubesmixed[i].animate({ x: randomnumber, y

我想做一个函数,除了数组中当前单击的函数。 意思是我有这样的东西:

cubesmixed = [array, with, 145, elements]
cubesmixed[54].click(function() { 
    for(var i = 0; i < 145; i++) {
    var randomnumber=Math.floor(Math.random()*500000);
    cubesmixed[i].animate({ x: randomnumber, y: randomnumber }, randomnumber, "bounce");
}
cubesmixed=[array,with,145,elements]
立方体混合[54]。单击(函数(){
对于(变量i=0;i<145;i++){
var randomnumber=Math.floor(Math.random()*500000);
立方体混合[i]。动画({x:randomnumber,y:randomnumber},randomnumber,“反弹”);
}
我不想让立方体混合[54]成为动画。我怎么能说这样的话呢
cubesmixed[i]除54外


提前谢谢!

也许这可以达到这个目的

cubesmixed = [array, with, 145, elements]
cubesmixed[54].click(function() { 
  for(var i = 0; i < 145; i++) {
    if(cubesmixed[i] == $(this)) continue;
    var randomnumber=Math.floor(Math.random()*500000);
    cubesmixed[i].animate({ x: randomnumber, y: randomnumber }, randomnumber, "bounce");
  }
}
试试这个:

cubesmixed = [array, with, 145, elements]
cubesmixed[54].click(function() { 
    for(var i = 0; i < 145; i++) {
    var randomnumber=Math.floor(Math.random()*500000);
    if(i!=54)){
        cubesmixed[i].animate({ x: randomnumber, y: randomnumber }, randomnumber, "bounce");
    }
}
cubesmixed=[array,with,145,elements]
立方体混合[54]。单击(函数(){
对于(变量i=0;i<145;i++){
var randomnumber=Math.floor(Math.random()*500000);
如果(i!=54)){
立方体混合[i]。动画({x:randomnumber,y:randomnumber},randomnumber,“反弹”);
}
}

这是我无法理解的,因此,对于不准确之处,我深表歉意:

var cubesmixed = $("elementsYouCanClick");

cubesmixed.each(function(idx, element){
    element.click(function() { 
        for(var i = 0; i < 145; i++) {
            if (i === idx) { 
                continue;
            }

            var randomnumber = Math.floor(Math.random()*500000);

            cubesmixed[i].animate({ x: randomnumber, y: randomnumber }, randomnumber, "bounce");
        }
    }
})
var cubesmix=$(“elementsYouCanClick”);
cubesmixed.each(函数(idx,元素){
元素。单击(函数(){
对于(变量i=0;i<145;i++){
如果(i==idx){
继续;
}
var randomnumber=Math.floor(Math.random()*500000);
立方体混合[i]。动画({x:randomnumber,y:randomnumber},randomnumber,“反弹”);
}
}
})

不完全确定,但关键的想法是使用
$。each()
函数迭代元素,这为您提供了使用
idx
的理由。

您使用jQuery对象数组,而不仅仅是包含
x
个元素的普通jQuery对象,有什么原因吗?如果(i!=54)cubesmixed[i]。动画({x:randomnumber,y:randomnumber},randomnumber,“bounce”);如果您不知道像
if(i!=54){/*do stuff*/}这样简单的事情,只需在函数中使用
if(i==54)continue
然后你应该先学习一些基础知识……如果你想避免循环中的大量比较操作,你还可以为所选元素的每一侧的所有项目设置两个FOR循环。不是这样干净的代码,但理论上应该更有效。不幸的是,你不能像那样比较jQuery对象,因为
$()
构造函数每次都创建不同的对象。事实上,
$(此)=$(此)
始终为false!它仍然无法工作,因为
.indexOf()
使用相同的比较,
$(此)
是一个全新的对象,永远不会出现在数组中。如果没有
$()
?我很确定这是可能的,我会发现如何…^^^谢谢,尽管这很愚蠢。我没有考虑循环中的if语句。
var cubesmixed = $("elementsYouCanClick");

cubesmixed.each(function(idx, element){
    element.click(function() { 
        for(var i = 0; i < 145; i++) {
            if (i === idx) { 
                continue;
            }

            var randomnumber = Math.floor(Math.random()*500000);

            cubesmixed[i].animate({ x: randomnumber, y: randomnumber }, randomnumber, "bounce");
        }
    }
})