2013-10-30 65 views
1

我有下面的代码,我想凝聚成for循环但不知道如何。我试着看着其他帖子,但卡住了。使用for循环来浓缩代码

有15个号码都在一起所以像为(i = 1;我< = 15;我++)

 if(checksquare1save=="true"){ 
      $("#checksquare1").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare1").removeClass("checksquareON"); 
     } 

     if(checksquare2save=="true"){ 
      $("#checksquare2").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare2").removeClass("checksquareON"); 
     } 

     if(checksquare3save=="true"){ 
      $("#checksquare3").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare3").removeClass("checksquareON"); 
     } 

     if(checksquare4save=="true"){ 
      $("#checksquare4").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare4").removeClass("checksquareON"); 
     } 

     if(checksquare5save=="true"){ 
      $("#checksquare5").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare5").removeClass("checksquareON"); 
     } 

     if(checksquare6save=="true"){ 
      $("#checksquare6").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare6").removeClass("checksquareON"); 
     } 

     if(checksquare7save=="true"){ 
      $("#checksquare7").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare7").removeClass("checksquareON"); 
     } 

     if(checksquare8save=="true"){ 
      $("#checksquare8").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare8").removeClass("checksquareON"); 
     } 

     if(checksquare9save=="true"){ 
      $("#checksquare9").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare9").removeClass("checksquareON"); 
     } 

     if(checksquare10save=="true"){ 
      $("#checksquare10").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare10").removeClass("checksquareON"); 
     } 

     if(checksquare11save=="true"){ 
      $("#checksquare11").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare11").removeClass("checksquareON"); 
     } 

     if(checksquare12save=="true"){ 
      $("#checksquare12").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare12").removeClass("checksquareON"); 
     } 

     if(checksquare13save=="true"){ 
      $("#checksquare13").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare13").removeClass("checksquareON"); 
     } 


     if(checksquare14save=="true"){ 
      $("#checksquare14").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare14").removeClass("checksquareON"); 
     } 

     if(checksquare15save=="true"){ 
      $("#checksquare15").toggleClass("checksquareON"); 
     } 

     else{ 
      $("#checksquare15").removeClass("checksquareON"); 
     } 

我曾尝试这一点,但没有奏效

 for (i = 1; i <= 15; i++){ 
      if(checksquare + i + save=="true"){ 
       $("#checksquare" + i).toggleClass("checksquareON"); 
      } 
     } 

编辑:

应该提到我以上

 checksquare1save = localStorage['ScienceSkills-basicSkillsCheck-check1-7868-2171-1085-5119-4672'] 
     checksquare2save = localStorage['ScienceSkills-basicSkillsCheck-check2-6582-7209-6435-8487-6994'] 
     checksquare3save = localStorage['ScienceSkills-basicSkillsCheck-check3-5367-9000-3502-5810-2295'] 
     checksquare4save = localStorage['ScienceSkills-basicSkillsCheck-check4-2961-8359-5106-2702-5132'] 
     checksquare5save = localStorage['ScienceSkills-basicSkillsCheck-check5-5801-5256-5838-2934-5277'] 
     checksquare6save = localStorage['ScienceSkills-basicSkillsCheck-check6-1162-2208-7274-5156-3693'] 
     checksquare7save = localStorage['ScienceSkills-basicSkillsCheck-check7-6178-4335-3148-1809-8066'] 
     checksquare8save = localStorage['ScienceSkills-basicSkillsCheck-check8-6609-6032-4539-4243-6273'] 
     checksquare9save = localStorage['ScienceSkills-basicSkillsCheck-check9-6261-3580-7658-7073-1914'] 
     checksquare10save = localStorage['ScienceSkills-basicSkillsCheck-check10-1504-7246-1864-4465-1319'] 
     checksquare11save = localStorage['ScienceSkills-basicSkillsCheck-check11-6400-3954-7124-3585-2086'] 
     checksquare12save = localStorage['ScienceSkills-basicSkillsCheck-check12-8303-8392-7301-5154-8007'] 
     checksquare13save = localStorage['ScienceSkills-basicSkillsCheck-check13-1207-8834-5941-3315-8893'] 
     checksquare14save = localStorage['ScienceSkills-basicSkillsCheck-check14-3089-4036-1427-2614-7399'] 
     checksquare15save = localStorage['ScienceSkills-basicSkillsCheck-check15-2750-4976-5357-6403-2979'] 
这些瓦尔
+2

'如果(checksquare + I +保存== “真”){'我认为错在这里 – roullie

+1

将checksquareXsave变量设置为数组。更容易得到它的价值,因为你可以只做checksquaresave [i] –

+0

你能举起小提琴吗? –

回答

5

这应该工作,如果你的变量是在全球范围内:

for (i = 1; i <= 15; i++){ 
     if(window['checksquare' + i + 'save']=="true"){ 
      $("#checksquare" + i).toggleClass("checksquareON"); 
     } 
     else{ 
      $("#checksquare" + i).removeClass("checksquareON"); 
     } 
    } 
+0

编辑我原来的帖子与我使用的阵列,如果有帮助 – craig

+0

窗口和括号之间的'.'导致语法错误。删除它,它会很好。 :) –

+0

仍然没有真正告诉我它是否在全球范围内,但我认为它应该工作。 –

1

您现在正在执行的代码将检查3个变量的值: checksquare,i &保存,而不是一个。

一种方式是将所有的数据放在一个数组中,并通过它。

如果你有一个数组:checksquaresave。那么你可以与你的价值观填补它:

checksquaresave[0] =value0, checksquaresave[1] =value1 , ... 

在此之后的代码将是简单的:

for (i = 1; i <= 15; i++){ 
    if(checksquaresave[i] =="true"){ 
     $("#checksquare" + i).toggleClass("checksquareON"); 
    } 
} 

编辑:为@Archer提到的(以及其他答案为好吧)你可以使用

window["checksquare" + i + "save"] 

以及,但我认为最好的办法是只需使用一个数组。 (cfr using window["variable" + i] in javascript

+0

是的,你可以......'window [“checksquare”+ i +“save”]',但我同意数组会更好;) – Archer

+0

啊不知道!这可能不是最好的做法吗? (性能明智) –

+1

我会说这不是最佳实践,没有给出理由。这只是一种令人不快的编码方式,也是我们拥有数组的原因!但是,仍然很方便知道。 – Archer

4

你最好使用一个数组checksquaresave,并推入它所有的checksquareXsave然后像你在做循环阵列。它需要一些重构,但稍后会为你节省一些痛苦。

for (i = 1; i <= 15; i++){ 
    if(checksquare[i] == 'true'){ 
     $("#checksquare" + i).toggleClass("checksquareON"); 
    } 
} 
1

表明你的代码,我能想到的唯一解决方案包括使用eval 。忘记我说过,因为你不想尝试这个解决方案。有15个类似命名的变量可能是一个问题。如果“checksquaresave”变量是全局变量,您可以使用window.variableNamewindow["variableName"]来检索它们。在这种情况下,它看起来像:

if (window["checksquare" + i + "save"] == "true") 

否则,将是很好的检查checksquare创建##保存变量,将它们设置为一个数组,而不是独立变量。然后,你的代码看起来是这样的:

1

如果你想只在运行时访问,而您知道这个名字的变量,可以将它们存储为一个对象的属性。

所以,如果你想访问checksquare1save,checksquare2save,等等,你可以这样做:

var storage = { 
    checksquare0save:true, 
    checksquare1save:true, 
    checksquare2save:false, 
    //...other variables... 
} 

for (var i = 0; i < 15, i++) { 
    console.log(storage["checksquare" + i + "save"]) 
}