首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于打破循环的语句

对于打破循环的语句
EN

Stack Overflow用户
提问于 2015-09-01 14:50:38
回答 4查看 117关注 0票数 2

我不知道是否有人会注意到,如果我编辑我的上一篇文章,所以我现在在这里张贴一个新的。

我有这个密码

代码语言:javascript
复制
$(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;

    });

我添加的代码:

代码语言:javascript
复制
    $("#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。

代码语言:javascript
复制
    <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。到目前为止,我还在努力弄清楚。任何帮助都将不胜感激。

第三次更新:有人看到这个了吗?我在里面插了几行。这是一个新的按钮,它将显示前4项。它很好,除非我在前四项。当我点击按钮时,会出现负数。我希望它能达到12-15,但是我的头脑在思考如何想出这个逻辑。有什么帮助吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-01 15:34:58

除了返回语句之外,您的“next-4”for循环看起来还不错。

返回(b == pmmain.length);

我不知道你为什么把它藏在里面,但那是让你觉得你的期待没有停止,实际上它是停止的。让我解释清楚。

假设在单击“next-4”div元素时,您的代码执行如下

代码语言:javascript
复制
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

如前所述,您的返回语句将立即中断for循环和函数,而且,它将以b == pmmain.length (4 == 16 )的形式返回对单击函数调用的false。只是一个便笺-返回假将阻止该事件的默认操作-在您的函数中没有什么可担心的。

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

然后回答另一个问题,回到数组中的前4项,可能尝试更改这一行代码,如下所示,

代码语言:javascript
复制
b = a;
d= b+4;

代码语言:javascript
复制
b = (a+4)<pmmain.length?a:0;
a = b;  // just in case if b is reset to 0
d=b+4;

此赋值b值取决于数组长度和当前指针('a‘值)。如果循环直到数组结束才能运行,那么b将得到0,因此您将从数组的第一个值开始。

票数 1
EN

Stack Overflow用户

发布于 2015-09-01 15:04:15

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

代码语言:javascript
复制
for (b = a; b < d; b++) {
  if(b < d){
    //run equation
  }else{
    break;
  }
}

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

票数 1
EN

Stack Overflow用户

发布于 2015-09-01 15:10:38

在回路中断的时候,

代码语言:javascript
复制
 loop:
 for (b = a; b < d; b++) {
 if(b < d){
     //your statement
    }else{
     break loop;
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32334708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档