我有一个如下所示的开关语句:
subCatTDs = 8;
switch(subCatTDs){
case 3:
//Do some code
case 2:
//Do some code
case 8:
console.log(subCatTDs);
}
我将其从代码的其余部分简化为试图解决正在发生的问题。 subCatTDs
确实被设置为不同的值(并且是更大循环的一部分)但是在这种情况下你会认为我在switch语句之前明确地声明了它的值并且控制台正在打印出来(就像我一样)说,它在一个循环中):
3
8
当我在声明之前直接设置值时,为什么会说'3'?
以下是更多代码。对于更宏大的方案可能没有多大意义,但它可能会有所帮助(这是一个相当复杂的插件,所以很难在这里包含所有内容;如果您需要澄清任何内容,请告诉我):
for(i = 0; i < numberTRs; i++){
var subCatValue = i + 1;
var subCatRow = $('.subCatTable > tbody > tr:nth-child(' + subCatValue + ')');
var subCatTDs = subCatRow.find('> td').length;
//This used to be 5 now it's 4?
switch(subCatTDs){
case 3:
//Subcat Title
for(j = 0; j < subCatTDs; j++){
switch(j){
case 0:
case 2:
var nthChild = j + 1;
var subCatElement = $('.subCatTable tr:nth-child(' + subCatValue + ') td:nth-child(' + nthChild + ')');
var subCatTitle = subCatElement.html();
$('div#subcat-' + rowCounter + '-' + subCatCounter).append('<div class="subCatTitle">' + subCatTitle + '</div>');
subCatCounter++;
if(subCatCounter>subCatPerRow){
subCatCounter = 1;
}
}
}
case 2:
//First time through
//Second time through
if(case2==true){
rowCounter++;
case2 = false;
continue;
}
case2 = true;
case 8:
console.log(subCatValue);
for(j = 0; j < subCatTDs; j++){
switch(j){
case 0:
case 5:
//Get the appropriate nth-child
var nthChild = j + 1;
var subCatElement = $('.subCatTable tr:nth-child(' + subCatValue + ') td:nth-child(' + nthChild + ')');
var subCatImage = subCatElement.html();
$('div#subcat-' + rowCounter + '-' + subCatCounter).append('<div class="subCatImage">' + subCatTitle + '</div>');
subCatCounter++;
if(subCatCounter>subCatPerRow){
subCatCounter = 1;
}
case 3:
case 8:
var subCatDescrip = subCatElement.html();
$('div#subcat-' + rowCounter + '-' + subCatCounter).append('<div class="subCatImage">' + subCatDescrip + '</div>');
subCatCounter++;
if(subCatCounter>subCatPerRow){
subCatCounter = 1;
}
}
}
}
}
编辑器上的格式化效果不佳。一切都不协调,但我想我已经接近了。不确定这是否有意义,但你看到我每次在for循环上循环时重置subCatTDs。它应该永远不会打印出'3',因为我只在检查8
的情况后才使用console.log(),但出于某种原因它会这样做。
任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
您需要在每个案例结束时提供一个中断声明,否则处理将会#34;通过&#34;到下一个案例一直到最后。案例8中的打印将始终执行。