我不知道是否有人会注意到,如果我编辑我的上一篇文章,所以我现在在这里张贴一个新的。
我有这个密码
$(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> <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,但是我的头脑在思考如何想出这个逻辑。有什么帮助吗?
发布于 2015-09-01 15:34:58
除了返回语句之外,您的“next-4”for循环看起来还不错。
返回(b == pmmain.length);
我不知道你为什么把它藏在里面,但那是让你觉得你的期待没有停止,实际上它是停止的。让我解释清楚。
假设在单击“next-4”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如前所述,您的返回语句将立即中断for循环和函数,而且,它将以b == pmmain.length (4 == 16 )的形式返回对单击函数调用的false。只是一个便笺-返回假将阻止该事件的默认操作-在您的函数中没有什么可担心的。
for循环只执行一次并返回(结束整个函数)。
然后回答另一个问题,回到数组中的前4项,可能尝试更改这一行代码,如下所示,
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值取决于数组长度和当前指针('a‘值)。如果循环直到数组结束才能运行,那么b将得到0,因此您将从数组的第一个值开始。
发布于 2015-09-01 15:04:15
回答你的问题的一种方法是是的,有一种方法可以打破循环。
for (b = a; b < d; b++) {
if(b < d){
//run equation
}else{
break;
}
}这会让循环停止。这不是最安全的方法,但它应该能解决你的问题。
发布于 2015-09-01 15:10:38
在回路中断的时候,
loop:
for (b = a; b < d; b++) {
if(b < d){
//your statement
}else{
break loop;
}
}https://stackoverflow.com/questions/32334708
复制相似问题