2011-04-26 93 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); 
     }) 
    } 
}