11.09.2010, 23:14
|
|
Интересующийся
|
|
Регистрация: 11.09.2010
Сообщений: 23
|
|
Глобальные переменные отлынивают
Есть div с 3-мя полями input и одной кнопкой. Изначально невидимые, они появляются, если кликнуть на div'е. По заполнению инпутов всё это добро (по идее) исчезает, если кликнуть на кнопке. Адрес нужного дива ловлю следующим образом (внимание на глобальную, вроде бы, переменную tekItem)
<script type="text/javascript" charset="windows-1251;">
tekItem;
function activatron(tekElem)
{
tekItem = tekElem;
var otkryvashka = new Array();
otkryvashka = tekElem.getElementsByTagName('input');
for(i=0;i<3;i++)
{
otkryvashka[i].style.display = 'block';
}
tekElem.getElementsByClassName('buttonka')[0].style.display = 'block';
}
function utverd()
{
var tekElem = tekItem;
var zakryvashka = new Array();
zakryvashka = tekElem.getElementsByTagName('input');
for(i=0;i<3;i++)
{
zakryvashka[i].style.display = 'none';
}
tekElem.getElementsByClassName('buttonka')[0].style.display = 'none';
}
</script>
на конпку навешена функция utverd(). Функцию activatron() запускаю в диве по onClick="...", передавая в неё 'this'.
Незадача: добро не исчезает...
Последний раз редактировалось kukuyok, 12.09.2010 в 15:25.
|
|
11.09.2010, 23:34
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от kukuyok
|
getElementsByClassName
|
это что такое?)
или вернее сказать, с чего вы решили что это будет работать во всех браузерах?
|
|
12.09.2010, 00:11
|
|
Интересующийся
|
|
Регистрация: 11.09.2010
Сообщений: 23
|
|
Гммм... гмммм... нафантазировал, а потом ещё и нагуглил
...правда ваша - FF, Opera да Chrome за милую душу уминают, IE - как всегда: не жриот...
Лады. Переведу её на id. Но вопрос-то, похоже, совсем не в этом... Как тут с глобальными переменными обстоит? По науке ли я тут требую от них помнить и чтить?
|
|
12.09.2010, 10:11
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
function toggle() {
var t = document.getElementById( 'area' ).style;
t.display = t.display == 'none' ? '' : 'none';
}
Оберните кнопки ещё в один DIV.
Эту функцию вешайте на onclick внешнего DIV'-а и кнопки. Всем инпутам уберите display: none. В атрибуте style внутреннего DIV'-а пропишите display: none.
|
|
12.09.2010, 15:01
|
|
Интересующийся
|
|
Регистрация: 11.09.2010
Сообщений: 23
|
|
exec
'area' - это, я так понимаю, тот самый обёрточный div..? Да, вариант хороший, но у меня проблемы с позиционированием... в общем, код тела таков:
<div class="itemka" id="it01" style="z-index:99;" onclick="activatron(this);">
<div class="avtomodel">
<input type="textarea" id="am01" class="am_pole" value="Модель автомобиля" onfocus="select();" />
Модель автомобиля
</div>
<div class="modchar">
<input type="textarea"id="gp01" class="am_pole" value="Грузоподъёмность" onfocus="select();" />
Грузоподъёмность
</div>
<div class="bashlat">
<input type="textarea" id="st01" class="am_pole" value="Стоимость" onfocus="select();" />
Стоимость
</div>
<div class="buttonka">
<input type="button" id="bt01" value="ОК" style="" onclick="utverd();" />
</div>
</div>
По-хорошему, ваше предложение - лишь оптимизация кода. И ей быть - но только после того, как мне станет понятно, почему не работает то, что, по-моему, должно работать. Да. Ещё раз - к сути вопроса. К теме. Глобальные. Переменные. Почему не работает?
|
|
12.09.2010, 15:07
|
|
Интересующийся
|
|
Регистрация: 11.09.2010
Сообщений: 23
|
|
Есть предположение, что ответ прост: после выполнения скрипта в хедаре глобальниые переменные из него нивелируются...
|
|
12.09.2010, 15:34
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от kukuyok
|
после выполнения скрипта в хедаре глобальниые переменные из него нивелируются...
|
глупость написал.
Сообщение от kukuyok
|
Глобальные. Переменные. Почему не работает?
|
Глобальные. Переменные. Работают.
И разбираться за вас, что вы такого намудрили никто не станет
Поставьте фаербаг, и отлаживайте ваш код.
Так все делают, и с чего бы кто-то должен был за вас по кускам собирать ваш неработающий пример, чтобы узнать из-за какой гулпости он у вас не работает
|
|
12.09.2010, 21:25
|
|
Интересующийся
|
|
Регистрация: 11.09.2010
Сообщений: 23
|
|
Пардон за настойчивый тон. Все предлагают оптимизацию кода, но никто не отвечает на вопрос. Вопрос поверхностный и не требует вдумываться в код. Никто не сказал, что моё представление о ходе выполнения скрипта верно или неверно (я ламер, СИшник). Попробую ещё раз, конкретней:
После загрузки html-документа в браузер выполняется его интерпретация, дело доходит до скриптов. В скрипте заводится глобальная переменная, где-то, используется, где-то меняется... бла-бла-бла... интерпретировали скрипт, отобразили страницу, молодцы. Когда я захочу баттоном обратиться к функции из этого скрипта - застану ли я глобальную переменную в её последнем по выполнению скрипта состоянии?
P.S.: как-то сложно, наверное, но пока не сориентировался, 2-й день ковыряюсь - засим плету, как могу
P.P.S.: глупость_написал.info == NULL
|
|
12.09.2010, 22:22
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
kukuyok,
Когда вы написали
activatron(this);
вы передали элемент
<div class="itemka" id="it01" style="z-index:99;" onclick="activatron(this);">
функции activatron
так вот вопрос - вы где так писать учились?
tekElem.getElementsByTagName('input');
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
12.09.2010, 22:29
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
ps: exec вам дело говорит, а то у вас код жуткострашный получается пока.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
|
|