Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 切掉数组值并用var i填充它_Javascript_Jquery_Html - Fatal编程技术网

Javascript 切掉数组值并用var i填充它

Javascript 切掉数组值并用var i填充它,javascript,jquery,html,Javascript,Jquery,Html,我有一个关于数组值的问题。我想要以下代码: cubes[0].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*5, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800)); cubes[1].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-col

我有一个关于数组值的问题。我想要以下代码:

cubes[0].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*5, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[1].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800));
cubes[2].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*3, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[3].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*2, 'background-color': '#510000'}, Math.floor(Math.random()*1800));
// until ...
cubes[300].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800));
我要做的是将整数切掉,并在for循环中用
I
填充它

比如:

  for (var i = 0; i < 300; i++) {
cubes[i].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*5, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[i].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800));
cubes[i].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*3, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[i].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*2, 'background-color': '#510000'}, Math.floor(Math.random()*1800));
// until ...
cubes[i].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800)); 
}
for(变量i=0;i<300;i++){
立方体[i]。动画({top:fixedOffs.top+row*20,左:fixedOffs.left row*5,'背景色':'#1f2c8a'},Math.floor(Math.random()*1800));
立方体[i]。动画({top:fixedOffs.top+row*20,左:fixedOffs.left row*4,'背景色':'#3d809a'},Math.floor(Math.random()*1800));
立方体[i]。动画({top:fixedOffs.top+row*20,左:fixedOffs.left row*3,'背景色':'#1f2c8a'},Math.floor(Math.random()*1800));
立方体[i]。动画({top:fixedoff.top+row*20,left:fixedoff.left row*2,'背景色':'#510000'},Math.floor(Math.random()*1800));
//直到。。。
立方体[i]。动画({top:fixedOffs.top+row*20,左:fixedOffs.left row*4,'背景色':'#3d809a'},Math.floor(Math.random()*1800));
}
因为我不想把每一个数字都打到300。 应该有一个类似函数的东西,它可以找到方括号并用数字填充。最困难的是,每个立方体的动画属性都不同。(但我已经有了)

谢谢

使用
.eq()

.get()
[]
返回本机dom元素,而不是jQuery集合


如果要设置300个对象的动画,我建议您删除jQuery。

将变量属性保存到某个位置:

var props = [
  { left : 5, bgColor: '#123' },
  { left : 4, bgColor: '#456' },
  { left : 2, bgColor: '#fff' },
  ...
  { left : 3, bgColor: '#f00' } 
];
然后使用循环:

for (var i = 0; i < cubes.length; i++) {
  cubes[i].animate(
    { 
      top: fixedOffs.top+row*20,
      left: fixedOffs.left-row * props[i].left,
      'background-color': props[i].bgColor
    },
    Math.floor(Math.random()*1800)
  );
}
for(变量i=0;i
引入一个索引变量
i
,并在每次数组访问时递增它,如下所示:

var i = 0;
cubes[i++].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*5, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[i++].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800));
cubes[i++].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*3, 'background-color': '#1f2c8a'}, Math.floor(Math.random()*1800));
cubes[i++].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*2, 'background-color': '#510000'}, Math.floor(Math.random()*1800));
// until ...
cubes[i++].animate({ top: fixedOffs.top+row*20, left: fixedOffs.left-row*4, 'background-color': '#3d809a'}, Math.floor(Math.random()*1800));

使用支持正则表达式的文本编辑器,您可以通过搜索
cubes\[\d+\]
并将其替换为
cubes[i++]

将现有硬编码索引替换为
i++
,您需要提供一个计算
left
属性的公式。我现在看不到任何图案。这与动画功能无关。我已经有了所有这些的代码。只是我必须手工插入数组的所有数字。我不想这样做。因为在某些情况下,大约有600个。请在问题中指定每次循环迭代需要更改的变量以及更改的方式。因此,如果我理解正确,您并不是在试图减少代码行数,您只是想去掉硬编码的数组索引。这应该很容易。只需声明
var i=0i++
替换每个索引,例如
cubes[i++].animate(…)@supersize我没有权限访问dreamweaver,但我知道它支持正则表达式。是否选中了“使用正则表达式”复选框?此外,它应该是
cubes\[\d+\]
,因为[and]是正则表达式中的保留字符,需要进行转义才能进行匹配。也许你会觉得这很有帮助。