Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Условие в цикле (https://javascript.ru/forum/misc/59589-uslovie-v-cikle.html)

Ermite 17.11.2015 22:56

Условие в цикле
 
Здравствуйте. У меня было довольно громоздкое условие. Вот его часть:

if (classactiv == 0.11111) {
  nameTOP.innerHTML = "Тут инфа 1";
  srcTOP.innerHTML = '<img src="ссылка" height="200px">';
  } else if (classactiv == 0.22222) {
  nameTOP.innerHTML = "Тут инфа 2";
  srcTOP.innerHTML = '<img src="ссылка" height="200px">';
  }

...

else {
nameTOP.innerHTML = "Тут другая инфа, если все вышеперечисленные условия оказывались неверными";
  srcTOP.innerHTML = '<img src="ссылка" height="200px">';
}


Такая запись занимала много места и я решил её немного сократить:

koefArr = [0.11111, 0.22222, 0.33333, 0.44444, 0.55555, 0.66666, 0.77777, 0.88888, 0.99999, 11111, 22222];
		nameclassArr = ["Й", "Ц", "У", "К", "Е", "Н", "Г", "Ф", "Ы", "В", "А"];
		srcclassArr = ["deamon", "warrior", "deamon", "warrior", "deamon", "warrior", "deamon", "warrior", "deamon", "warrior", "deamon", "warrior"]
		  
		  for (i = 0; i <= 12; i++) {
		  if (classactiv == koefArr[i]) {
  
  nameTOP.innerHTML = "Класс:" + nameclassArr[i];
  srcTOP.innerHTML = '<img src="мой сайт/' + srcclassArr[i] + '.png" height="200px">';
}
}


Но есть одна проблема: не могу сделать так, чтобы выводилась дополнительная информация, если все перечисленные условия оказались неверными. Можно ли это как-нибудь реализовать?

Vlasenko Fedor 17.11.2015 23:11

сделайте объект и не будет проблемы
var data = {
    '0.11111': {
        info: '"Тут инфа 1",
        img: '<img src="ссылка" height="200px">'
    },

    '0.22222': {
        info: '"Тут инфа 2",
        img: '<img src="ссылка" height="400px">'
    }
};
var res;
if (data.hasOwnProperty(classactiv)) {
    res = data[classactiv];
} else {
    res = {
        info: 'default',
        img: '<img src="default.jpg" height="400px">'
    };
}

console.dir(res);

вариант

рони 17.11.2015 23:14

Ermite,
var x = -1;
for (i = 0; i <= 12; i++)
 if (classactiv == koefArr[i])  {x = i; break};
if (x > -1){
nameTOP.innerHTML = "Класс:" + nameclassArr[x];
srcTOP.innerHTML = '<img src="мой сайт/' + srcclassArr[x] + '.png" height="200px">';
}
else {}

Ermite 17.11.2015 23:16

Но это не особо укоротит код..

Ermite 17.11.2015 23:32

Цитата:

Сообщение от рони (Сообщение 396581)
Ermite,
var x = -1;
for (i = 0; i <= 12; i++)
 if (classactiv == koefArr[i])  {x = i; break};
if (x > -1){
nameTOP.innerHTML = "Класс:" + nameclassArr[x];
srcTOP.innerHTML = '<img src="мой сайт/' + srcclassArr[x] + '.png" height="200px">';
}
else {}

Тааак)) Надо немного разобраться :)

рони 17.11.2015 23:34

Ermite,
var a = "Тут другая инфа, если все вышеперечисленные условия оказывались неверными",
b = '<img src="ссылка" height="200px">';
for (i = 0; i <= 12; i++)
 if (classactiv == koefArr[i])  {
a = "Класс:" + nameclassArr[i];
b = '<img src="мой сайт/' + srcclassArr[i] + '.png" height="200px">';
 };

nameTOP.innerHTML = a;
srcTOP.innerHTML = b;

Ermite 18.11.2015 00:01

Цитата:

Сообщение от рони (Сообщение 396586)
Ermite,
var a = "Тут другая инфа, если все вышеперечисленные условия оказывались неверными",
b = '<img src="ссылка" height="200px">';
for (i = 0; i <= 12; i++)
 if (classactiv == koefArr[i])  {
a = "Класс:" + nameclassArr[i];
b = '<img src="мой сайт/' + srcclassArr[i] + '.png" height="200px">';
 };

nameTOP.innerHTML = a;
srcTOP.innerHTML = b;

О, а это намного легче. Мог и сам бы догадаться.. :(
Спасибо)


Часовой пояс GMT +3, время: 20:20.