2015-05-13 1 views
0

Вот код: Я хочу, чтобы добавить зеленый цвет, если имя матч иначе серыйСравнить две строки, если матч добавить в другой переменной с помощью JavaScript

var section_name = new Array("Ceilings", "Curtains and fixing", "Door and frame", "Fittings", "Flooring", "Light fittings", "Walls and skirting", "Windows and cills"); 

    for (var i = 0; i < section_name.length; i++) { 
     for (var j = 0; j < status_clr.length; j++) { //"Walls and skirting", "Windows and cills" 
      if (section_name[i] == status_clr[j]) { 
       li_color.push("green"); 
       break; 
      } 
     } 
     li_color.push("grey"); 
    } 

Он добавить как зеленый и серый, когда условие удовлетворяется ... где это проблема?

+0

Вам нужен флаг, чтобы проверить, если вы нажмете ваш 'сломать,' –

+0

просто использовать переключатель заявление – Alex

ответ

0

Просто установите флаг.

var section_name = new Array("Ceilings", "Curtains and fixing", "Door and frame", "Fittings", "Flooring", "Light fittings", "Walls and skirting", "Windows and cills"); 
 
    for (var i = 0; i < section_name.length; i++) { 
 
     var found = false; 
 
     for (var j = 0; j < status_clr.length; j++) { //"Walls and skirting", "Windows and cills" 
 
      if (section_name[i] == status_clr[j]) { 
 
       li_color.push("green"); 
 
       found = true; 
 
       break; 
 
      } 
 
     } 
 
     if(!found) 
 
      li_color.push("grey");    
 
    }

+0

Это не будет работать. . Впервые он будет проверять «Потолки» на «Стены и плинтус», а затем добавить серый, а затем проверить «Потолки» на «Windows» и «Cills», а затем добавить серый –

+0

Вы правы, извините, я исправил ответ – SharpEdge

+0

Теперь work..thanx :) –

0

Проверьте это:

var has_green = false; 
var section_name = new Array("Ceilings", "Curtains and fixing", "Door and frame", "Fittings", "Flooring", "Light fittings", "Walls and skirting", "Windows and cills"); 

for (var i = 0; i < section_name.length; i++) { 
    for (var j = 0; j < status_clr.length; j++) { //"Walls and skirting", "Windows and cills" 
     if (section_name[i] == status_clr[j]) { 
      li_color.push("green"); 
      has_green = true; 
      break; 
     } 
    } 
    if(has_green !== true) { 
     li_color.push("grey"); 
    } 
} 
+1

thanx для ур ответ :) –

+0

Не проблема. Рад помочь ;). –

0

С утверждением излома прыжка из петли. И после этого вы находитесь в другом цикле, где установлен серый цвет.

Вы можете использовать еще и выбрать один цвет.

if (section_name[i] == status_clr[j]) { 
    li_color.push("green"); 
    break; 
} 
else { 
    li_color.push("grey"); 
} 
+0

Это не работает..чел снова –

+0

Я даю вам идею, которую вы можете рассмотреть, я не кодирую вас. Если ваш код проходит оба цвета, он будет использовать оба цвета. Вы можете изменить его, убедитесь, что он выбирает только один цвет. Пример с другим. – massie

+0

, но ур неверен –

0

Вам нужен флаг для обозначения того, что случилось во внутреннем цикле:

var flag=false;//initialy set to false 
    var section_name = new Array("Ceilings", "Curtains and fixing", "Door and frame", "Fittings", "Flooring", "Light fittings", "Walls and skirting", "Windows and cills"); 
    for (var i = 0; i < section_name.length; i++) { 
     flag=false;//reset flag 
     for (var j = 0; j < status_clr.length; j++) { //"Walls and skirting", "Windows and cills" 
      if (section_name[i] == status_clr[j]) { 
       li_color.push("green"); 
       flag=true;//set flag 
       break; 
      } 
     } 
     if(flag==false) 
      li_color.push("grey"); 
    } 
Смежные вопросы