Конвертация значения в переменную
Имею переменные
var color_arr = new Array(); lips_pomade_param = 7; color_arr[lips_pomade_param]='<li>Раздел</li>'; Имею выражение 1, которое выдает undefined n = "lips_pomade_param"; alert(color_arr[n]); Имею выражение 2, которое выдает '<li>Раздел</li>' alert(color_arr[lips_pomade_param]); Почему в выражении 1 undefined алертиться я понимаю. Потому что, вызываем color_arr["lips_pomade_param"], а не color_arr[lips_pomade_param]. Получается значение n нужно отконвертировать в название переменной? Не представляю как, поэтому прошу поделиться соображениями. |
n = lips_pomade_param; |
Не пойдет.
n у меня получает стринговое значение "lips_pomade_param" и ни как иначе. |
Цитата:
var lips_pomade_param = 7, n1 = "lips_pomade_param", n2 = lips_pomade_param alert(typeof n1) alert(typeof n2) |
Цитата:
|
Кстати, почему везде памада, а тут вдруг карандаш?:)
color_arr[lips_*!*pencil*/!*_param]='<li>Раздел</li>'; |
Цитата:
var color_arr = new Array(); lips_pomade_param = 7; color_arr[lips_pomade_param]='<li>Раздел</li>'; n = lips_pomade_param; alert(color_arr[n]); |
Потому что карандашами тоже красим. Шучу). Помада там. Отредактировал вопрос.
|
Неужели выход только один?
if (n == "lips_pomade_param") color_arr[lips_pomade_param] = some_param; else if if (n == "lips_pencil_param") color_arr[lips_pencil_param] = some_param; else if etc.. |
Цитата:
а не в var. Я бы и не спрашивал иначе. |
Цитата:
|
Цитата:
var color_arr = new Array(); lips_pomade_param = 7; color_arr[lips_pomade_param]='<li>Раздел</li>'; n = "lips_pomade_param"; _n=eval(n); alert(color_arr[_n]); PS не используй это в реальных проектах. а то Б-женька тебя накажет, а мне оторвет руки код дан, чисто в ознакомительных целях. при нормальном написании проекта, твой ситуация просто тне может возникнуть. и даже если она волзникла(а этого не может ыбть, если ты правильно пишешь), то switch более лучший и правильный выход |
Насчет switch в курсе, просто еще его не применял, чтобы не внести в вопрос ошибок написал привычно на if'ах.
Вообще, спасибо! Цитата:
Класс использую как переменную mass[class]. Такого не может возникнуть? А что еще такого я могу знать у элемента что не в стринге? id, data-(name) - тоже стринг. По сути включаю нужный массив по клику на элемент. Подумал и решил реализовать как вот выше описываю. Можно по другому? |
Реальность такова, что к одному вопросу можно найти тысячу ответов. Начиная от тупо-бредовых, вроде эвала, и заканчивая вполне адекватными, типа свитча.
А, вообще... правда это секрет.. но ладно, так уж и быть - открою. Есть такая штука как объекты.. Так вот к ним как раз через строки обращаются:) var color = {lips_pomade_param:'<li>Раздел</li>'}, n = 'lips_pomade_param'; alert(color[n]); |
Цитата:
если быть более верным, то их замыкания. помещайте туда, что хотите, и будет вам счастье |
Меня снова будут по голове бить сейчас, но почему нельзя сделать так:
var color_arr = new Array(); color_arr["lips_pomade_param"]='<li>Раздел</li>'; n = "lips_pomade_param"; alert(color_arr[n]); :-? |
Цитата:
Используй объекты! Найди, так сказать, одно отличие от того, что написал выше:) var color_arr = new Object(); color_arr["lips_pomade_param"]='<li>Раздел</li>'; n = "lips_pomade_param"; alert(color_arr[n]); new Object(), конечно, лучше просто через {} объявить |
Sweet,
Ты меня с lancer спутал ) |
inGray,
Ой, действительно:D Но смысл-то тот же |
Я и не спорю)) Просто предлагаю решение ;)
|
Просто, мне кажется, что можно взять штаны, просунуть в них руки и ходить по улице, людей велесить. А можно писать нормальный грамотный код:)
|
Будем знать )
|
Часовой пояс GMT +3, время: 06:37. |