Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не найходится элемент по getElementById (https://javascript.ru/forum/events/26690-ne-najjkhoditsya-ehlement-po-getelementbyid.html)

titans 18.03.2012 14:44

не найходится элемент по getElementById
 
Привет всем. У меня такой вопрос. Есть цикл. Который генерирует 100 div.
function gen()
{
document.write('<div class="hht'+prom+'" style="left:'+Math.floor(Math.random()*90)+'%;display:none;}"></div>');
prom++;
}
for (var i=0; i<count; i++)
gen();

генерация проходит успешно. Я хочу сделать матрицу. Т.е. 100 квадратиков зелёного цвета рандомно располагаются на одной линии и потомпо одному начинают спускаться. Так вот вопрос. Как мне обратится к определённому номеру div? Выше преведённый цикл создаёт дивы hht0 - hht99 . Я написал такую функцию:
function show(gf)
{
var s="hht"+gf;
var d=document.getElementById(s);
d.style.display=block;
}

Данная функция должна отображать блок с определённым номером. Допустим я в функцию передаю цифру 10. Переменная gh=10. Мне нужно , что бы getElementById взял div10 , но на это месте возникает ошибка. почему?

Kolyaj 18.03.2012 14:51

Вы создаёте дивы с class, а не с id.

titans 18.03.2012 15:08

Цитата:

Сообщение от Kolyaj (Сообщение 163817)
Вы создаёте дивы с class, а не с id.

ну да с class, а как это меняет JS код?

Kolyaj 18.03.2012 15:10

То есть вас не смущаете, что вы тегу задаёте class, а искать пытаетесь по id?

titans 18.03.2012 15:12

Попробовал так document.getElementByClass пишет ошибкку 'document.getElementByClass' is not a function

titans 18.03.2012 15:13

Цитата:

Сообщение от Kolyaj (Сообщение 163820)
То есть вас не смущаете, что вы тегу задаёте class, а искать пытаетесь по id?

Да нет, смущает. Просто я не знаю функцию, которая ищет по классам.

Kolyaj 18.03.2012 15:14

document.getElementsByClassName -- возвращает коллекцию элементов, есть не во всех браузерах.

titans 18.03.2012 15:23

Цитата:

Сообщение от Kolyaj (Сообщение 163823)
document.getElementsByClassName -- возвращает коллекцию элементов, есть не во всех браузерах.

Заработало, спасибище. А что делать, если пишет Undefined variable: block Чем ему блок не угодил. если писать так d.style.display="block"; то пишет ошибку Cannot convert 'd.style' to object

Rootpassword 18.03.2012 15:52

Цитата:

Сообщение от titans
Заработало, спасибище. А что делать, если пишет Undefined variable: block Чем ему блок не угодил. если писать так d.style.display="block"; то пишет ошибку Cannot convert 'd.style' to object

Это значит, что d.style у вас не существует как объект, но вы его пытаетесь использовать в объектной нотации. Выведите подробности про d-сами увидите, в частности nodeType посмотрите

titans 18.03.2012 16:13

Цитата:

Сообщение от Rootpassword (Сообщение 163827)
Это значит, что d.style у вас не существует как объект, но вы его пытаетесь использовать в объектной нотации. Выведите подробности про d-сами увидите, в частности nodeType посмотрите

alert(d.nodeType); выводит undefined. Значит не находит элемент. А как же его достать то...

Kolyaj 18.03.2012 16:16

titans,
Цитата:

Сообщение от Kolyaj
возвращает коллекцию элементов


Раед 18.03.2012 16:24

Цитата:

Сообщение от titans
d.style.display="block"

так попробуйте
d[0].style.display="block"

titans 18.03.2012 16:50

Цитата:

Сообщение от Раед (Сообщение 163831)
так попробуйте
d[0].style.display="block"

Так работает. Спасибо.

titans 18.03.2012 17:54

Ещё вопрос. а почему функция не отрабатывает смещение?
function down1(gd)
{
var f=0;
for (var i=0; i<gd; i++)
		{
			var s="hht"+gd;
			var d=document.getElementsByClassName(s);
			var top = d[0].style.top;
			top = parseInt(top);
			if (top>min) top=0;
			d[0].style.top = (top+g)+'%';
			f++;
		}
		
}


Уже и с классом имеем дело, а всё равно не смещает... top после парсинга = NaN . т.к. не получает высоту...

Раед 18.03.2012 18:20

Цитата:

Сообщение от titans
top после парсинга = NaN

похоже
d[0].style.top == undefined

titans 18.03.2012 19:02

Цитата:

Сообщение от Раед (Сообщение 163854)
похоже
d[0].style.top == undefined

Разобрался. Окащывается при генерации нужно было прописывать top:0


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