2014-08-10 4 views
0

я пытаюсь сделать такой код:Как написать цикл с JavaScript

var code1 = a, code2 = b, code3 = c; 
var x = 3; 

for (y = 1; y <= x; y++) { 
    //this part where i dont know about 
    alert(); 
} 

Так как сделать это предупреждение code1, code2 и code3? Я имею в виду, что это предупреждает значения a, b и c. Я пробовал с alert("code"+y); и alert(code+y);, но это не будет.

ответ

5

Использование Bracket notation

alert(window["code"+y]); 

Я предпочел бы рекомендовать вам использовать массив как

var code = [1, 2, 3]; 
for (y = 0; y < code.length; y++) { 
    alert(code[y]); 
} 
+2

Это будет * только * работать в глобальном масштабе. Если вы находитесь в какой-либо области функций, * это не сработает. * Хотя ответ правилен в теории, было бы гораздо лучше рекомендовать OP использовать объект вручную, вместо того, чтобы полагаться на 'window'. –

+3

Сфера применения, а также просто обучение плохому использованию javascript для новичка может быть причиной –

+0

@NiettheDarkAbsol Вопрос был: »Итак, как сделать это предупреждением code1, code2 и code3?« И этот код делает, для чего спросил TO , Я нахожу это в порядке, чтобы критиковать его с комментарием. Но пока это решение действительно, я не вижу причин для понижения. –

9

Так как сделать это предупреждение code1, code2 и code3? Я имею в виду это предупреждение значение a, b и c?

Лучше использовать массив вместо дискретных code1, code2 и code3 переменных: (. Обратите внимание, что я начал y в другом месте)

// (I assume a, b, and c have already been declared somewhere, or that your real 
// code has literals?) 
var codes = [a, b, c]; 
var y; 

for (y = 0; y < codes.length; y++) { 
    alert(codes[y]); 
} 

В то время как возможно, чтобы сделать code1, code2, code3 вещь с глобальными переменными, глобальные переменные следует избегать d, когда это возможно, и это почти всегда возможно. (Это также возможно с локальными переменными, но вы должны использовать eval или его кузена Function конструктор, и избежать eval является также то, что вам следует избегать, когда это возможно, и почти всегда возможно. :-))

Поочередно , если вы оказываетесь желающих сделать это, где массив не совсем имеет смысла, вы можете использовать объект вместо:

var codes = { 
    code1: a, 
    code2: b, 
    code3: c 
}; 
var y; 
for (y = 1; y <= 3; ++y) { 
    alert(codes["code" + y]); 
} 

это работает, потому что в JavaScript, вы можете получить доступ к свойствам объекта, используя либо точечную нотацию и литерал (obj.foo) или обозначение скобок и строка (obj["foo"]), и в последнем случае строка может быть результатом любого выражения. Поскольку "code" + y является code1 когда y является 1, codes["code" + y] смотрит свойство "code1" на codes (когда y является 1).

+0

Я на самом деле думаю, что это «лучшее» решение, чем другие, но, очевидно, не то, что исправляет проблему OP ... не знаю, почему вы, ребята, убиваете его с помощью downvotes хотя –

+0

вы, возможно, были правы с образовательной точки зрения, но это не ответ на этот вопрос – JimiDini

+2

Я не понимаю.Есть ли вспышка нисходящего потока? Это слишком верный ответ. –

Смежные вопросы