2011-04-18 74 views
0

嘿,所有,我是JavaScript的新手,我正在使用jQuery庫。 基本上我試圖創建這一行的倍數,我使用「:eq(0)來做到這一點。 問題是:eq(0)在代碼中重複3次, (0),:eq(1),:eq(2),:eq(3)這是我從中得到的結果, )等等。)我需要它做到這一點(:eq(0),eq(0),eq(0),eq(1):eq(1):eq(1)等..)JavaScript(jQuery)的for循環問題

for (i = 0; i < 6; ++i) { 
    var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1"><span>'; 
    var $lieq = "li:eq("+i+")"; 
    $("ul.side-block-content "+$lieq+"").mouseenter(function() { 
     $("ul.side-block-content "+$lieq+" .article-title a span") 
      .replaceWith($titleMarquee+$("ul.side-block-content "+$lieq+" .article-title a").text()+"</span></marquee>"); 
    }); 
} 

如果任何人都可以讓我知道如何正確地做這個循環,也許如何重新創建的代碼爲它做這將是巨大的同樣的事情。

在此先感謝。

@尼克的回答是:

var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1"><span>'; 
    for (i = 0; i < 6; ++i) { 
     for (j = 0; j < 7; ++j) { 
     $("ul.side-block-content li:eq("+i+")").mouseenter(function(){$("ul.side-block-content li:eq("+i+") .article-title a span").replaceWith($titleMarquee+$("ul.side-block-content li:eq("+i+") .article-title a").text()+"</span></marquee>");}); 
     $("ul.side-block-content li:eq("+i+")").mouseleave(function(){$("ul.side-block-content li:eq("+i+") .article-title a marquee").replaceWith('<span>'+$("ul.side-block-content li:eq("+i+") .article-title a").text()+"</span>");}); 
     } 
    } 

這是我使用的是什麼,現在,它不工作。我做得對嗎?

@ Gilly3

$("ul.side-block-content li marquee").each(function() { 
    this.stop();    // prevent the marquee from scrolling initially 
    }).mouseenter(function() { 
    this.start();    // start the scroll onmouseenter 
    }); 

<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate"> 
+3

'marquee'已被棄用在「眨眼」的第一個孩子之外。 – alex 2011-04-18 23:30:55

+0

@alex:噓。我們試圖讓「眨眼」標籤平靜地死去。 – cHao 2011-04-18 23:39:18

+0

字幕不在HTML中,它是基於瀏覽器的代碼。但這與問題無關。 – user713052 2011-04-18 23:42:39

回答

0

您可以嵌入另一個for循環裏面,像這樣:

for (i = 0; i < 6; ++i) { 
    for (j = 0; j < 3; ++j) { 
    // repeat i three times, and use :eq("+i+") 
    } 
} 
+0

您能否更具體地回答這個問題,我嘗試了一下,但沒有爲我做任何事情。 – user713052 2011-04-18 23:52:32

+0

@user將外部循環每次循環時都認爲是*,內部循環將循環三次*。 – alex 2011-04-18 23:57:56

+0

我已經編輯我的問題與我根據這個答案改變了。 – user713052 2011-04-19 00:00:04

1

它看起來像你試圖讓你<li>文字滾動,當你在它懸停。是對的嗎?

只要把字幕代碼在原HTML和做到這一點:

$(function() 
{ 
    $("ul.side-block-content li marquee").each(function() { 
     this.stop();    // prevent the marquee from scrolling initially 
    }).mouseenter(function() { 
     this.start();    // start the scroll onmouseenter 
    }); 
}); 

我也想說不要使用選框的標籤,因爲它已過時,使用jQuery插件代替,但最後無論如何,我看到的jQuery選取框插件實際上在後端使用了<marquee>。所以... pfft。

+0

這是一種天才的方式來做到這一點!但我試過了,它並沒有阻止它最初。也許我做錯了?我已經用我正在做的事情更新了我的問題。 – user713052 2011-04-19 00:13:15

+0

確保您的代碼在domready處理程序中運行。即,'$(function(){/ *您的代碼在這裏* /});' – gilly3 2011-04-19 03:22:22