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, их не было изначально...

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

callbackhell 30.12.2015 03:12

Цитата:

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

вот так вот: getElementById теперь у нас задаются новые id?

callbackhell 30.12.2015 03:14

Цитата:

Сообщение от Deff
не спасает от нужды в перечислении!

Да там перечисление делается только для перезаписи свойств window, которые и так существуют. Бесполезный код.

Deff 30.12.2015 03:35

callbackhell,
ну оспоримо,
for(var i=o;i<n;i++){
window['but'+i] = document.getElementById(['but'+i]);
}
====================
for(var i=o;i<n;i++){
   document.getElementById(['but'+i]);
}

Cделать коссбраузерно и для старых ,либо сделать по Вашему желанию, без учета старых, споря из-за window['but'+i] =
Стоила ли овчинка ценного замечания в пару постов ?
И разве не вариант, захватить всё возможные варианты ?
======================
Ксать до сих пор маюсь на Опере 12.15, где есть не все фичи ESMA6, но есть возможность правки сразу исходного HTML, в отличие от новых версий

callbackhell 30.12.2015 03:47

Цитата:

Сообщение от Deff
где есть не все фичи ESMA6

ЕМНИП, полностью ES6 еще нигде не реализован. А опера 12.15 ЕМНИП на presto, в ней отладка не особо надежная, в том плане, что может не соответствовать новым движкам, лишний гемор. Ради правки кода не стоит оно того, тем более редактор там говно.

ruslan_mart 30.12.2015 03:58

Цитата:

Сообщение от Deff
Ксать до сих пор маюсь на Опере 12.15, где есть не все фичи ESMA6, но есть возможность правки сразу исходного HTML, в отличие от новых версий

Да ну, давно уже пора забыть этот браузер. Да, там действительно много полезных фич, но это того не стоит. Я сам, где-то полтора года назад, не хотел с неё слизать, но пришлось.

А по поводу правки исходного HTML, кто тебе мешает написать своё расширение?

Deff 30.12.2015 04:00

callbackhell,
Хм, ну на вкус и цвет тогарищей нет.
Собственно пока не было такого сайта, где не мог бы поправить прям в исходнике и глянуть результат,
Не думаю что Вы, выдавая код, всегда результат видели (особенно для длинносайта)

Deff 30.12.2015 04:02

Цитата:

Сообщение от Ruslan_xDD
А поводу правки исходного HTML, то кто тебе мешает написать своё расширение?

Есть бумаклет под любой брауз, но имхо всё таки неудобен, искать, тыкать кнопку закладки, после каждой правки(есть крейзи монкей - душа не лежит чот к ФФ)
Тут видишь каждый тег, и (он, - забыл слово) окрашен в соответствии: сss и теги HTML, js
Опять жа часто работаю с фреймами(с ино и не с инодоменов), ну тут с расширениями швах, ибо ток прямая вставка HTML кода


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