Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   переменная var в цикле (https://javascript.ru/forum/misc/60419-peremennaya-var-v-cikle.html)

Максим1977 28.12.2015 11:10

переменная var в цикле
 
Дана задача - упростить код без использования eval и массивов.

Вот код
var but1 = document.getElementById("but1");
	var but2 = document.getElementById("but2");
	var but3 = document.getElementById("but3");
	var but4 = document.getElementById("but4");
	var but5 = document.getElementById("but5");


этот код не работает
for (var i = 1; i<6; i++) {
var ['but'+i] = document.getElementById(['but'+i]);
}


такая штука работает

рони 28.12.2015 11:26

Максим1977,
window['but'+i] = document.getElementById(['but'+i]);

Максим1977 28.12.2015 11:32

Спасибо! Заработало!

callbackhell 30.12.2015 00:42

Цитата:

Сообщение от рони
window['but'+i] = document.getElementById(['but'+i]);

ты присваиваешь то, что и так по-дефолту присвоено.
<html>
<head>
</head>
<body>

<div id="foo1">foo1</div>
  
  
<script>
alert(window["foo" + 1])
</script>
  
</body>
</html>

рони 30.12.2015 00:57

callbackhell,
если не мне, то спасибо, если мне, то привет виртуальному коню.

ruslan_mart 30.12.2015 02:55

callbackhell / foo, такая фишка в старых браузерах не работает. Я точно помню, что в FF у меня были с этим проблемы.

Кстати, для чего квадратные скобки в getElementById? По моему, они тут явно лишние.

Deff 30.12.2015 02:57

Ruslan_xDD,
Да, была такая феня, хорошо работала лишь в старых ие

callbackhell,
2. Задача-то была задать новые ID, их не было изначально...

рони 30.12.2015 03:04

Цитата:

Сообщение от Ruslan_xDD
Кстати, для чего квадратные скобки в getElementById?

не убрал когда копировал :)

callbackhell 30.12.2015 03:10

Цитата:

Сообщение от Ruslan_xDD
такая фишка в старых браузерах не работает

похрену на это старье, эта фича есть в стандарте, а твой старый FF пользуют полтора человека в мире

Deff 30.12.2015 03:12

callbackhell,
Цитата:

Сообщение от Deff
2. Задача-то была задать новые ID, их не было изначально...

Ваше утверждение, не спасает от нужды в перечислении!


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