Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вопрос по jquery switch-case, не пойму где ошибка (https://javascript.ru/forum/jquery/67301-vopros-po-jquery-switch-case-ne-pojjmu-gde-oshibka.html)

SaM1001 09.02.2017 11:45

Вопрос по jquery switch-case, не пойму где ошибка
 
Всем здрасти! Моя первая тема на форуме, сожалею, что сразу с вопросами сюда пришёл, но парюсь с этим куском кода. Кто может подсказать почему не отображается картинка
Вот этот код
$(function () {
            $('#image').change(function () {
                switch ($('#kversion').text()) {
                    case 1: {
                        if (arr[i].SCO == '1' || '2' || '3')
                            devImage = "../image/gk/img1.png";
                    }
                    case 2: {
                        if (arr[i].SCO == '4' || '5' || '6')
                            devImage = "../image/gk/img2.png";
                    }
                    case 3: {
                        if (arr[i].SCO == '7' || '8' || '9')
                            devImage = "../image/gk/img3.png";
                        break;
                    }
                    case 4: {
                        if (arr[i].SCO == '10' || '11' || '12')
                            devImage = "../image/gk/img3.png";
                        break;
                    }
                    case 5: {
                        if (arr[i].SCO == '13' || '14' || '15')
                            devImage = "../image/gk/img1.png";
                        break;
                    }
                    case 6: {
                        if (arr[i].SCO == '16' || '17' || '18')
                            devImage = "../image/gk/img2.png";
                        break;
                    }
                    case 7: {
                        if (arr[i].SCO == '19' || '20' || '21')
                            devImage = "../image/gk/img3.png";
                        break;
                    }
                    case 8: {
                        if (arr[i].SCO == '22' || '23' || '24')
                            devImage = "../image/gk/img1.png";
                        break;
                    }
                    case 9: {
                        if (arr[i].SCO == '25' || '26' || '27')
                            devImage = "../image/gk/img2.png";
                        break;
                    }
                    case 10: {
                        if (arr[i].SCO == '28' || '29' || '30')
                            devImage = "../image/gk/img3.png";
                        break;
                    }
                }

            });
        });


Цепляю отсюда значение от 1 до 30:
<label type=\"text\" id=\"kversion\" class=\"einheit\" style=\"margin-left:2px; width:auto; top:0px; align:left;\">" + arr[i].KV + "</label>


И хочу его сдесь выдать:
<div class=\"devImg\"><label id=\"image\" style=\"width:150px; position:relative; \"></label></div>


У кого глаз на это набит, помогите разобраться и укажите на ошибки

рони 09.02.2017 12:09

Цитата:

Сообщение от SaM1001
if (arr[i].SCO == '1' || '2' || '3')

https://learn.javascript.ru/array-me...of-lastindexof

if (['1' , '2' , '3'].indexOf(arr[i].SCO) !== -1)

SaM1001 09.02.2017 12:38

рони, спасибо огромное за отзыв, но что-то не получается ни фига. Изменил коде на вот так:

$(function () {
            $('#image').change(function () {
                switch ($('#gkennung').text()) {
                    case 0: {
                        if (['1', '2', '3'].indexOf(arr[i].GK) !== -1)
                            txt = "<img src=\"../imag/gk/img1.png\" height=\"40\" width=\"40\">";
                        break;
                    }
                    case 1: {
                        if (['4', '5', '6'].indexOf(arr[i].SCO) !== -1)
                            txt = "<img src=\"../imag/gk/img2.png\" height=\"40\" width=\"40\">";
                        break;
                    }...


и как мне кажется, ошибка сидит вот тут:
switch ($('#gkennung').text())

потому, что дебаг проходит до change (function) потом больше ничего не видит. Хотя в arr[1].GK значения все присутсвуют...
Короче запутался я слегка

рони 09.02.2017 14:48

SaM1001,
ваш код не знает что такое arr[i].GK

ksa 09.02.2017 14:54

Цитата:

Сообщение от SaM1001
помогите разобраться

Как вариант...

var typ=1;
var sco='2';
obj=[
	{
		sco: ['1','2','3'],
		url: '../image/gk/img1.png'
	},
	{
		sco: ['4','5','6'],
		url: '../image/gk/img2.png'
	}
];
var url=(obj[typ-1].sco.indexOf(sco)!==-1)? obj[typ-1].url: 'no url';
alert(url);

Всяко интереснее будет... ;)

SaM1001 09.02.2017 15:21

Цитата:

Сообщение от рони (Сообщение 443775)
SaM1001,
ваш код не знает что такое arr[i].GK

Знает, там значение 30 стоит (это мне дебагер показал)!

У меня ещё другой вопрос:

Я коневетирую децимальное число вот так decimalToHex(arr[i].GK) есть ли вариант присвоить ещё одну функцию сюда, которая после каждого символа проставит мне точку?

SaM1001 09.02.2017 15:29

Не, тут совсем мудренно как-то, я не понимаю как твой код работает))) Но спасибо за совет!

Dilettante_Pro 09.02.2017 15:59

SaM1001,
Цитата:

Сообщение от SaM1001
и как мне кажется, ошибка сидит вот тут:
switch ($('gkennung').text())

А что такое у вас $('gkennung') ?

SaM1001 09.02.2017 16:16

Цитата:

Сообщение от Dilettante_Pro (Сообщение 443794)
SaM1001,


А что такое у вас $('gkennung') ?

У себя я эту ошибку уже исправил, там # не хвататет - это id, сорри, сам не сразу заметил

laimas 09.02.2017 17:23

Цитата:

Сообщение от SaM1001
я эту ошибку уже исправил

Исправьте и другую:

switch ($('#kversion').text()) { - здесь значение будет строкой
case 1: { - а здесь строку пытаемся сравнить с числом


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