Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Странный DIV

251
18 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Привет!
Вот обнаружил непонятное поведения одного ДИВа ))
Дано: вставка жабаскриптового кода. За вставкой идет DIV
В JS-коде две функции. В одной делаю такое:
 
Код:
var mygraph = document.getElementById(srcObj);
mygraph.innerHTML='BLA-BLA';

srcObj - глобальная переменная со значением 'divtrans'.
Во второй функции делаю такое:
 
Код:
var mydivtrans = document.getElementById('divtrans');
alert (document.getElementById('divtrans').innerHTML);

Сам гражданин DIV:
 
Код:
echo "<div id=\"divtrans\" style=\"visibility:visible;position:absolute;
z-index:99;width:100;height:100;background-color:dddddd;\"></div>"

Загадка: почему алерт выдает пустое значение, когда я визуально вижу в диве значение BLA-BLA?:D

ЗЫ. Тут еще обнаружил, что 7-й ослик (на других не в курсе) не позволяет делать такое и выдает ошибку:
Цитата:

myfakevariable=document.getElementById('myfakevariable');


то есть надо, чтобы идентификатор элемента и название переменной были разными. Или боян?

251
18 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Я наверное понял из-за чего такой прикол. Когда я заставляю еще раз (уже после выполнения скриптов) прочитать ДИВ - все ОК, результат есть тот, что надо. Получается, что ФАКТИЧЕСКИ заполение ДОМ-структуры JavaScript'ом выполняется уже после завершения их обработки броузером. Например, это то же самое, что в одном и том же РНР-скрипте в первой строчке кода записывать кукисы, а во второй-уже считывать. Если другие мнения или я прав?:)

Добавлено:
DOM тут не при чем. Переделал так: В первой ф-ции определенное значение пристваиваю переменной А. Во всторой ф-ции читаю это значение. Но там пусто. Переменная А - глобальная. ЗЫ. Неужели тут кроется какая-то маленькая оплошность? :))
12
19 августа 2007 года
alekciy
3.0K / / 13.12.2005
Зря весь код не привел. Я подозреваю что дело в том, что у тебя JS код в начале страницы и ты вызываешь скрипт еще до того, как браузер построил DOM.
[HTML]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
</head>

<body>
<div id="divtrans" style="visibility:visible;position:absolute;z-index:99;width:100;height:100;background-color:dddddd;"></div>

<script type="text/javascript">
var srcObj = 'divtrans';

var mygraph = document.getElementById(srcObj);
mygraph.innerHTML='BLA-BLA';

var mydivtrans = document.getElementById('divtrans');
alert (document.getElementById('divtrans').innerHTML);

</script>

</body>

</html>
[/HTML]
Это работает в FF1.5, Opera 9.22 и IE6. Если JS поставить в начало страницы, то работать перестанет. Так что поведение вполне нормальное. Функции навесь на такой обработчик, который запустится после построения DOM.
251
19 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: alekciy
Зря весь код не привел. Я подозреваю что дело в том, что у тебя JS код в начале страницы и ты вызываешь скрипт еще до того, как браузер построил DOM.


Нда, действительно, что-то я раньше не догадался. :D Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог