对于声明打破循环

时间:2015-09-01 14:50:38

标签: javascript jquery html arrays break

我不知道是否有人会注意到我是否编辑了我以前的帖子,所以我现在在这里发布一个新帖子。

我有这段代码

$(document) .ready(function(){
    var a;
    var b;
    var c;
    var d;
    var pmmain =["Citrix", "Coach", "Disney", "Edison", "Eversource", "Fedex", "General Dynamics", "Hertz", "Kimco", "Nabors", "Starbucks", "Timewarner", "TW Telecom", "Weatherford", "Western Union", "Zoetis"];
            $("#mains") .one("click",function(){
    c=0;
    d=c+4;
    a=4;
    b=0;

    for (a=c; a<d; a++){
    $("#pm-page-main") .append("<div class=\"main-box\"><div class=\"title-box\"><span class=\"reg-wht-bold\">"+pmmain[a]+"</span></div><BR><BR><img src=\"imgs\\"+pmmain[a]+".png\"></div>");
    }
    });
       $("#next-four").click(function() {

                 b=a;
                 d = b +4;
                $("#pm-page-main") .html(""); 
        for (b=a; b < d; b++) {
          if(b != 16){

                $("#pm-page-main") .append("<div class=\"main-box\"><div class=\"title-box\"><span         class=\"reg-wht-bold\">" + pmmain[b] + "</span></div><BR><BR><img src=\"imgs\\" + pmmain[b] + ".png\"></div>"+b+"").hide().show();
            }
             else{
        a=0;
        }}

                a = a+4;

    });

我添加的代码:

    $("#last-four").click(function() {

         b = (a)<pmmain.length?a:0;
    a = b;  // just in case if b is reset to 0
    d=b-8;


        $("#pm-page-main") .html(""); 

for (b=a; b-4 > d; d++) {


        $("#pm-page-main") .append(d+"<div class=\"main-box\"><div class=\"title-box\"><span class=\"reg-wht-bold\">" + pmmain[d] + "</span></div><BR><BR><img src=\"imgs\\" + pmmain[d] + ".png\"></div>").hide().fadeIn(75);
   }

        a = a-4;
    });
    });

它正常工作。这是一个菜单,一次显示4个项目。这里的问题是for语句即使到达数组的末尾也不会停止循环。我试图在for循环中放入一个if语句,但无济于事。

我的问题是如何在到达数组末尾时停止for循环?或者有没有办法回到前4项。有没有更好的方法来解决这个问题?我在Jquery中读到过.each,但我不知道如何使用它。

更新:我只粘贴需要代码的html。

    <div id="pm-page">
    <div id="top-left">
    <span class="title">PAGEMAKEUP Section</span>
    </div>

    <div id="top-right">
    <button class="btn-home">Home</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button class="btn-akbar">akbar</button>
    </div><BR>
    <h1 class="line-blank"><span></span></h1>
    <!--<div class="bar"></div>-->
    <div id="pm-body">
    <div class="pm-page-menu">
    <button id="mains">STYLE TEMPLATES</button>
    <button id="next-four">OVERPRINT VS KNOCKOUT</button>
    <button>CREATING CUSTOM QR CODE</button>
    <button>PM FILE MANAGER</button>
    </div>

    <div id="pm-page-main">

    </div>
    </div>
    </div>

第二次更新:嗨,我希望有人会看到这个。我已经更新了javascript代码,现在循环回到0.我现在无法解决的问题是,当b等于16时,a应该重置为0,以便它再次显示前4个项目。但问题是,当我再次单击该按钮(在数组中的最后一个值之后)时,它不会返回到0,而是显示未定义的17,18,19。当我再次单击时,跳过项目0,1,2和3,程序立即跳转到4,5,6,7。到目前为止,我仍在努力解决这个问题。任何帮助将不胜感激。

第3次更新:有人看到这个吗?我已插入几行。它是一个新按钮,其中将显示前4个项目。它的工作正常,除非我在前四个项目中。当我点击按钮时,会出现负数。我希望它能达到12-15但我的头脑正在转向如何提出这个逻辑。有什么帮助吗?

4 个答案:

答案 0 :(得分:1)

回答你问题的一种方法是,有一种方法可以打破循环。

File -> Preferences -> Color Theme

这将停止它所在的循环。 这不是最安全的方法,但它应该解决你的问题。

答案 1 :(得分:1)

对于循环中断,

 loop:
 for (b = a; b < d; b++) {
 if(b < d){
     //your statement
    }else{
     break loop;
    }
  }

答案 2 :(得分:1)

你的&#34; next-four&#34; for循环看起来没问题,除了它中的return语句

return(b == pmmain.length);

我不知道你为什么把它放在里面,但是那个让你认为你看起来没有停止的那个,实际上确实如此。让我清楚地解释一下。

让我们一起点击“下一步四”&#39; div元素,您的代码执行如下

b = a; //let us say 'a' is 4 and so as 'b' ie. b=4
d = b + 4; // d = 4 + 4 ==> d=8

for(b=a; b<d; b++)  // now b value is again set to 4 and run loop until b<8
{
     $("pm-page-main").append("<div..."> + pmmain[b] + "<...>"); // element added pmmain[4]= 'eee'
     return (b== pmmain.length); // this will break the loop right away
}
a = a+4; // you will never reach here because of return statement in the loop

如上所述,你的return语句将立即打破for循环和函数,而且,它将返回false给你的click函数调用,因为b == pmmain.length ie。,4 == 16总是为false。 [只是一个音符 - 返回false会阻止该事件的默认操作 - 无论如何都不用担心你的功能]

你的for循环只执行一次并返回(结束整个函数)。

回答你回到阵列上前四项的其他问题,可能会尝试更改下面这行代码,

b = a;
d= b+4;

b = (a+4)<pmmain.length?a:0;
a = b;  // just in case if b is reset to 0
d=b+4;

这个赋值b取决于你的数组长度和当前指针(&#39; a&#39;值)。如果你的循环无法运行直到你的数组结束,那么b将得到0,所以你将从你的数组的第一个值开始。

答案 3 :(得分:0)

在循环中添加另一个条件,以便它们在到达数组末尾时结束:

for (a = c; a < d && a < pmmain.length; a++) {

for (b = a; b < d && b < pmmain.length; b++) {