JavaScript(jQuery)for循环问题

时间:2011-04-18 23:26:40

标签: javascript jquery for-loop

嘿所有,我是JavaScript的新手,我正在使用jQuery库。 基本上我正在尝试创建此行的倍数,我正在使用“:eq(0)来执行此操作。 问题在于:eq(0)在代码中重复3次,并且每次重复时我都在循环,它有不同的数字。

这就是我从中得到的结果我认为(:eq(0),:eq(1),:eq(2),:eq(3)等。) 我需要它来做这个(:eq(0),:eq(0),:eq(0),:eq(1):eq(1):eq(1)等...)

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>");
    });
}

如果有人可以让我知道如何正确地执行此循环,或者可能如何重新创建代码以执行相同的操作,那将是非常好的。

提前致谢。

@Nick的回答:

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">

2 个答案:

答案 0 :(得分: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
    });
});

我还想说不要使用marquee标签,因为它已被弃用并改为使用jQuery插件,但我看到的最后一个jQuery选框插件实际上在后端使用了<marquee>。所以... pfft。

答案 1 :(得分:0)

你可以在里面嵌入另一个for循环,如下:

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