2012-04-27 9 views
-2

どのようにフェードアウト配列要素をフェードインできますか?私は、JavaScriptで3つの要素を持つ次の配列を持っていますし、数秒遅れて1つずつxor Outでそれらをフェードしたいと思います。配列要素をフェードイン/アウト

textlist = new Array("news1", "news2","news3"); 

更新:配列項目は、これらのウェブサイト上で表示される実際のテキストは、IDがありません。

+2

... "の文字列をフェージング" –

+0

@RobWを定義します。彼が望むのはおそらく[this](http://stackoverflow.com/a/10353672/601179)です。 – gdoron

+1

@RobW。私は間違っていた...それは "それは私のためにすべての"質問のようなものです。** - 1 ** – gdoron

答えて

2

を試してみてください。したがって、あなたのページのどこかに、たとえば<div id='newsPanel'/>という要素で表示する必要があります。 あなたは試みることがあります。

var listTicker = function(options) { 

    var defaults = { 
     list: [], 
     startIndex:0, 
     interval: 3 * 1000, 
    } 
    var options = $.extend(defaults, options); 

    var listTickerInner = function(index) { 

     if (options.list.length == 0) return; 

     if (!index || index < 0 || index > options.list.length) index = 0; 

     var value= options.list[index]; 

     options.trickerPanel.fadeOut(function() { 
      $(this).html(value).fadeIn(); 
     }); 

     var nextIndex = (index + 1) % options.list.length; 

     setTimeout(function() { 
      listTickerInner(nextIndex); 
     }, options.interval); 

    }; 

    listTickerInner(options.startIndex); 
} 

var textlist = new Array("news1", "news2", "news3"); 

$(function() { 
    listTicker({ 
     list: textlist , 
     startIndex:0, 
     trickerPanel: $('#newsPanel'), 
     interval: 3 * 1000, 
    }); 
});​ 

jsfiddleでこれを試してみてください。

+0

これは完璧に動作し、すぐにテストします。 – user1263981

+0

'newsPanel'要素に 'width'& 'height'が固定されていないか、またはインライン()要素で、テキストの内容が次のようなものである場合、 'newsPanel'の周囲要素の位置が影響を受ける可能性があります。異なるサイズ。 – Kibria

+0

これはIE 8のためですし、IE7では大丈夫です。 – user1263981

3

文字列は要素のIDである場合:

textlist = ["news1", "news2","news3"]; 
$.each(textlist, function(index, value){ 
    $('#' + value).delay(1000 * index).fadeIn(); 
}); 
  • 最初要素が1000の後にフェードイン* 0 =すぐ
  • 第2の要素は、* 1〜1000 = 1秒後にフェード。
  • 3番目の要素は、1000 * 2 = 2秒後にフェードインします。
  • ...
  • ...
  • N要素1000 * N = N秒後にフェードイン。

Live DEMO


更新:

O.K.

textlist = ["News 1", "News 2", "News 3"]; 
$.each(textlist, function(index, value) { 
    $(':contains("' + value + '")').delay(1000 * index).fadeIn(); 
});​ 

Live DEMO

+0

繰り返し処理する配列がスニペットから抜けています – pomeh

+0

配列要素はIDではありません。実際のテキストはウェブサイト – user1263981

+0

@pomehに現れます。その迷惑なエラーを修正しました。ありがとう! – gdoron

0

私はこれらの値は、要素のIDです推測:あなたは:containsセレクターを使用できるように、配列内の要素がidのが、フリーテキストではないことを更新しました。あなたは配列項目がテキストであると述べている場合は、以下のようなもの、

function fadeInOut(textlist) { 
    $('#' + textlist.splice(0, 1)[0]).fadeIn(1000, function() { 
     $(this).fadeOut(1000, function() { 
      fadeInOut(textlist); 
     }); 
    }); 
} 

DEMO

+0

配列要素はIDではなく、実際のテキストはウェブサイトに表示されます。私はBBCのようなニュースティッカーを作成しようとしています。 – user1263981

0

HTML:

<div id="container"></div> 

Javascriptを:

var textlist=new Array("news1", "news2","news3"); 
var timer; 

    function textFade(index){ 
     $("#container").fadeOut(200).html(text).fadeIn(200); 
     timer = setTimeout(function() { 
      textFade(text); 

      },3000); 
    } 

    $(document).ready(function() { 
     textFade(0); 
    }); 
+0

それは動作しませんか? – user1263981

+0

@ user1263981、私はコードを編集しました、私は以前に提供された誤ったコードについては残念です。 – KBN

+0

私はあなたのコードを試しましたが、退色していません。 http://jsfiddle.net/Lsy77/2/ – user1263981