2011-04-18 104 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