Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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_Function - Fatal编程技术网

Javascript 对不同对象使用不同值的相同函数

Javascript 对不同对象使用不同值的相同函数,javascript,jquery,html,function,Javascript,Jquery,Html,Function,我有这个函数来移动我的#cubo1,但我想用不同的值将相同的函数应用于其他函数(#cubo2,#cubo3和#cubo4)。但是我对这个有点陌生,我不知道怎么做,我尝试了复制函数的一些部分,但每次只有一个起作用 HTML JavaScript: <script type="text/javascript"> $(document).ready(function(){ animateDiv(); }); function makeNewPosition(){

我有这个函数来移动我的#cubo1,但我想用不同的值将相同的函数应用于其他函数(#cubo2,#cubo3和#cubo4)。但是我对这个有点陌生,我不知道怎么做,我尝试了复制函数的一些部分,但每次只有一个起作用

HTML

JavaScript:

<script type="text/javascript">

$(document).ready(function(){
    animateDiv();   
});

function makeNewPosition(){
    var h = $('.fundo').height() - 50;
    var w = $('.fundo').width() - 50;    
    var nh = Math.floor(Math.random() * h);
    var nw = Math.floor(Math.random() * w);   
    return [nh,nw];     
}
function animateDiv(){
    var newq = makeNewPosition();
    var oldq = $('#cubo1').offset();
    var speed = calcSpeed([oldq.top, oldq.left], newq);
    $('#cubo1').animate({ top: newq[0], left: newq[1] }, speed, function(){
      animateDiv();        
    });    
};




function calcSpeed(prev, next) {   
    var x = Math.abs(prev[1] - next[1]);
    var y = Math.abs(prev[0] - next[0]);    
    var greatest = x > y ? x : y;  
    var speedModifier = 0.01;
    var speed = Math.ceil(greatest/speedModifier);
    return speed;
}

</script>

$(文档).ready(函数(){
animateDiv();
});
函数makeNewPosition(){
var h=$('.fundo').height()-50;
var w=$('.fundo').width()-50;
var nh=数学地板(数学随机()*h);
var nw=Math.floor(Math.random()*w);
返回[nh,nw];
}
函数animateDiv(){
var newq=makeNewPosition();
var oldq=$('#cubo1').offset();
var速度=计算速度([oldq.top,oldq.left],newq);
$('#cubo1')。动画({top:newq[0],left:newq[1]},速度,函数(){
animateDiv();
});    
};
函数calcSpeed(上一个,下一个){
var x=Math.abs(prev[1]-next[1]);
var y=Math.abs(上一个[0]-下一个[0]);
var最大=x>y?x:y;
var speedModifier=0.01;
var speed=Math.ceil(最大/速度修改器);
返回速度;
}

您的jQuery选择器可以是一个变量:

var i = 1; //or 2 or 3 or 4...

$('#cubo' + i).animate(...);
这也可以是animateDiv函数的参数:

function animateDiv(i){
    $('#cubo' + i).animate(...);
}
如果要为所有对象设置动画,可以将其粘贴到for循环中:

for(var i = 1; i < 5; i++){
   $('#cubo' + i).animate(...);
}
for(变量i=1;i<5;i++){
$('#cubo'+i).动画(…);
}

你所说的“每次只有一个有效”是什么意思?我尝试的一切都像复制粘贴“函数animateDiv()…”,但将“cubo1”替换为“cubo2”,并更改某些值,其中只有一个有效。。
function animateDiv(i){
    $('#cubo' + i).animate(...);
}
for(var i = 1; i < 5; i++){
   $('#cubo' + i).animate(...);
}