2011-04-26 61 views
0

我在jquery中有以下代码片段。其中,我想动画每个元素的数组一个接一个。在jquery中的Javascript数组对象

<script type="text/javascript"> 
     function AnimateText() { 
      var myCars = new Array("Saab", "Volvo", "BMW"); 
      myCars.each(function() { 
       $(this).fadeIn("2000").fadeOut("2000"); 
      }); 

     } 

    </script> 

但我收到此错误对象不支持此方法或属性

编辑

感谢所有的answer.Now我有问题,在动画的数组元素屏幕。


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function AnimateText() { 
      var myCars = new Array("Saab", "Volvo", "BMW"); 
      $.each(myCars, function (key, value) { 
       $("#myDiv").html(value).fadeIn("2000") ; 
      }); 

     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="myDiv"></div> 
    <input type="button" id="btnTest" value="Animate" onclick="AnimateText();" /> 
    </form> 
</body> 
</html> 

回答

1

您需要使用静态$.each()方法:

var myCars = ["Saab", "Volvo", "BMW"]; 
// Capture this because inside the loop it will have a different meaning 
var $this = $(this); 
$.each(myCars, function() { 
    $this.fadeIn("2000").fadeOut("2000"); 
}); 

也PROBA布莱想将此文本中的一些DOM元素:

var myCars = ["Saab", "Volvo", "BMW"]; 
$.each(myCars, function() { 
    $('#spinner').html(this).fadeIn("2000").fadeOut("2000"); 
}); 

其中,例如spinner是一个div:

<div id="spinner"></div> 

UPDATE:

看到您的更新后,它更清晰对我来说你想要达到的目标。您可以使用.delay()方法:

var myDiv = $('#myDiv'); 
var myCars = ['Saab', 'Volvo', 'BMW']; 

$('#btnTest').click(function() { 
    $.each(myCars, function(index, value) { 
     var val = value; 
     myDiv.delay(1000).fadeIn(1000, function() { 
      myDiv.text(val); 
     }); 
    }); 
}); 

而且这里有一个live demo

+0

没有得到这个,内环路jQuery的这通常是指在循环 – ezmilhouse 2011-04-26 12:44:48

+0

@ezmilhouse当前OBJ,是的,这就是为什么你可能需要外界捕捉到一个循环。无论如何,在一个字符串上调用'.fadeIn'没有多大意义,这就是为什么我认为OP需要在其他某个对象上显示它。 – 2011-04-26 12:46:18

+0

我没有收到任何错误,但我在屏幕上看不到任何动画 – 2011-04-26 12:46:30

1
function AnimateText() { 
    var myCars = new Array("Saab", "Volvo", "BMW"); 
    $(myCars, function(key, value) { 
     $('#' + value).fadeIn("2000").fadeOut("2000"); 
    }); 
} 

更好的解决办法是具有与标识(萨博,沃尔沃等)和具有共享类.cars HTML的div:

$(".cars").each(function(){ 
$(this).fadeIn("2000").fadeOut("2000"); 
}); 
+0

我试过了你的第二种方法。在这个调用中,所有的div元素都在淡入淡出的同时,但我想要一个一个 – 2011-04-26 13:03:17

+1

猜测每个都太快了,试着添加延迟() – ezmilhouse 2011-04-26 13:23:40

1

这应该是更接近你是什么从你的代码期望,我想:P

var myCars = Array("Saab", "Volvo", "BMW"); 
var currentCar = 0; 
var myDiv = $('#myDiv'); 

function AnimateText() { 
    var car = myCars[currentCar++]; 
    if (car) { 
     myDiv.html(car).fadeIn('2000', function() { 
      myDiv.fadeOut('2000', AnimateText); 
     }) 
    } 
}