Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   создать переменную в цикле (https://javascript.ru/forum/misc/30691-sozdat-peremennuyu-v-cikle.html)

Hekumok 12.08.2012 16:37

создать переменную в цикле
 
где-то видел здесь на форуме, но уже не помню где, как создать переменную в цикле (дальше не знаю, как выразить свою мысль)...в общем должно быть так:
for (var i = 1; i<4; i++) {
var perem+i = i ;
} ; //создадутся переменные perem1, perem2, perem3

Как это вот сделать? Там вроде что-то с window надо

Dmitriyff 12.08.2012 16:40

for (var i = 1; i<4; i++) {
window['perem'+i] = i ;
}

Hekumok 12.08.2012 16:43

Цитата:

Сообщение от Dmitriyff (Сообщение 196950)
for (var i = 1; i<4; i++) {
window['perem'+i] = i ;
}

Спасибо)))

Deff 12.08.2012 16:44

Hekumok,
создайте массив эт правильнее
var perem=[]
for (var i = 1; i<4; i++) { 
perem[i] = i ; 
} ; //со
alert(perem[2])


ну или
for (var i = 1; i<4; i++) { 
eval('var perem'+i+' = '+i) ; 
} ; //со
alert(perem2)

Hekumok 12.08.2012 17:15

хм...сцуко не работает...что не так?
<html><head><style>
#card {
border: solid #000 1px ;
position: absolute ;
top: 5% ;
width: 15px ;
height: 15px ;
}
</style></head><body>
<script>
for (var i = 1; i<6; i++) {
window['div'+i] = document.createElement('div') ;
window['div'+i].id = "card" ;
var left = 5*i+15*i ;
window['div'+i].style.left = left+'px' ;
body.appendChild(window['div'+i]) ;
} ;
</script></body></html>

lord2kim 12.08.2012 17:22

Hekumok,
document.body.appendChild(window['div'+i]) ;

да и не помешало бы поправить строку с присвоением id, а то у всех одинаковые...

Dim@ 12.08.2012 17:22

Hekumok,
посмеялся - спасибо, а что такое "body" у тебя в коде пиши тогда
document.body

или
document.getElementsByTagName("body")[0]

Hekumok 12.08.2012 17:22

Deff, lord2kim, Dim@, спасибо, что-то я тупанул :)

lord2kim 12.08.2012 17:25

Цитата:

Сообщение от Hekumok (Сообщение 196969)
Deff, спасибо, но у меня что-то пример выше не работает

где это у вас пример Deff-а не робит:blink:

Hekumok 12.08.2012 17:30

Цитата:

Сообщение от lord2kim (Сообщение 196967)
Hekumok, да и не помешало бы поправить строку с присвоением id, а то у всех одинаковые...

Мне так и надо :)

Hekumok 12.08.2012 17:31

Цитата:

Сообщение от lord2kim (Сообщение 196971)
где это у вас пример Deff-а не робит:blink:

Ды я не о том, проехали

Hekumok 12.08.2012 18:50

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 196980)
eval('var ololo')

Спасибо :)

Hekumok 12.08.2012 20:31

блин, а почему если добавить в цикл (пост 5)
window['div'+i].onclick = 'color(this)'

и создать функцию
function color(element) {
element.style.backgroundColor = 'red' ;
}

то при онклике на любой div ничего не произойдет, только появится кружок загрузки в браузере! Что не так, блин?

Deff 12.08.2012 20:39

Hekumok,
Наверно так
function color(element) { 
element.style.backgroundColor = 'red' ; 
}

var elem = document.getElementsByTagName("div");
var Length = elem.length;

for(i=0; i<Length; i++){
elem[i].onclick = function() {color(this)};
}

Hekumok 12.08.2012 20:48

Дзен-трансгуманист, Deff, Maxmaxmaximus спасибо

Deff 12.08.2012 20:51

Maxmaxmахimus, Спс


Hekumok,
Поправил, там вместо var - val было

Deff 12.08.2012 20:57

Maxmaxmахimus,
:) => тыкайте http://hostjs-mybb2011.narod.ru/Maxmaxmaximus.htm

Deff 12.08.2012 21:12

Maxmaxmахimus,
Ну как я понял - челу нун тыкать дивы -а они чтобы окрашивались

Deff 12.08.2012 21:21

Дзен-трансгуманист,
ну там диваки вокруг названий форумов ну и сразу на body два (нун разноцветку повесить


Deff 12.08.2012 21:27

Maxmaxmахimus,
А -я всё забываю - что не в Опере - не работает
Поправил!
Хотя можно и так
function color(element) { 
element.style.backgroundColor = 'red' ; 
}

var elem = document.getElementsByTagName("div");
var Length = elem.length;

for(i=0; i<Length; i++){
elem[i].setAttribute('onclick', 'color(this)')
}

Опера считает elem[i].onclick='color(this)' как установку атрибута

devote 13.08.2012 09:34

Цитата:

Сообщение от Maxmaxmахimus
и я могу обьективно обосновать это.

ну обоснуй, любопытно же послушать чем тебе не угодил этот браузер. Неужели опера вызывает отвращение лишь по тому что дает возможность вешать обработчик иначе?

devote 13.08.2012 09:50

Цитата:

Сообщение от Maxmaxmахimus
это все.

ты меня удивил))) я рассчитывал на большее)))

Цитата:

Сообщение от Maxmaxmахimus
на ютьюбе если развернуть плеер на весь экран а потом выйти из этого режима то флеш элемент перемещается вбок.

Хм... всегда смотрю видео на ютубе не видел такой проблемы... Хотя соглашусь, с флешем в опере последнее время совсем плохо что-то стало.

devote 13.08.2012 10:01

Цитата:

Сообщение от Maxmaxmахimus
На самом деле я помню косяков 10 примерно насчитал в свое время, щас подзабыл все

Обычно люди жалуются на то что связано с дизайном и юзабилити, типо открывается меню при двойном клике по тексту и т.д. Хотя все это легко настроить и ненужное отключить, например для отключения всплывающего окна при выделении по двойному клику нужно снять галку: opera:config#UserPrefs|AutomaticSelectMenu

Цитата:

Сообщение от Maxmaxmахimus
нужно масштабирование увеличить) перед этим делом

понятно, ну я просто масштабированием пользуюсь очень редко.


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