Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не работает обращение к элементу по id (https://javascript.ru/forum/events/21581-ne-rabotaet-obrashhenie-k-ehlementu-po-id.html)

grafe 16.09.2011 00:06

не работает обращение к элементу по id
 
Господа, доброго Вам времени трудобудней, помогите, кто знает, советом)

столкнулся вот с чем: при вызове функции onclickом она адекватно срабатывает, а при вызове её же onloadом- увы и ах..
вроде передаю одни и те же параметры, почему там работает, а там- нет- одному Аллаху известно) ну может и кому-то из вас тоже))

суть такова, функция podcut должна срабатывать и при onclickе и при переходе на определённый якорь, тобишь при onloadе

беду собсно отловил: при onloadе не срабатывает getElementById.
в общем жду и уповаю, что подскажете) код ниже



вот так перехожу на якорь

<a target="_blank" href="./index.php?show=delivery#a_ems">EMS</a>



а вот так вызываю онклик

<div class="de_text  de_head2 pointer" onclick="podcut(\'cut4\')">
	4. Курьерская доставка ЕМС в регионы
</div>



//грубо говоря при каждой загрузке вытаскиваю имя якоря и при определённых значениях вызываю podcut() и посылаю ей определённые данные 
window.onload =maxdep(window.location.hash);

function maxdep(hsh)
	{
	if(hsh=='#a_courier')
		{
		podcut('cut1');
		}
	if(hsh=='#a_selfeject')
		{
		podcut('cut2');
		}
	if(hsh=='#a_russianpost')
		{
		podcut('cut3');
		}
	if(hsh=='#a_ems')
		{
		podcut('cut4');
		}
	}

function podcut(id)
	{
 alert('it works?'+id);// тут ещё при обоих методах вызова всё гуд
	curr=document.getElementById(id);
        alert('it works!'+curr.style.height);//на сиим и приплываем..
	if(curr.style.height!='auto')
		{
		curr.style.height='auto';
		}
	else
		{
		curr.style.height='47px';
		}
	}



проблема непосредственно в onloadе, ибо конструкция
window.onload =	podcut('cut4');

тоже не работает)) (срабатывает только первый алерт)

ваый 16.09.2011 00:44

window.onload = function() {
    podcut('cut4');
};

grafe 16.09.2011 01:01

Цитата:

Сообщение от ваый (Сообщение 126682)
window.onload = function() {
    podcut('cut4');
};

а так- вообще не работает)
ну, всмысле даже первый алерт не срабатывает

yashka525 16.09.2011 01:08

Может быть у Вас скрипт стоит перед (выше) якорем, и на onload он не успевает загрузится, как Вы уже обращаетесь к нему. Попробуйте скрипт опустить ниже нужного элемента.

dmitriymar 16.09.2011 01:13

1 не стоит для имён переменных использовать слова какие так или иначе использует язык-может работать а может не работать-это рендомно в зависимости от браузера.
2 поставь/открой дебагер

grafe 16.09.2011 01:22

дебаггер пишет
curr is null
я же говорю, проблема в том, что почему-то не срабатывает getElementById

grafe 16.09.2011 01:24

Цитата:

Сообщение от yashka525 (Сообщение 126687)
Может быть у Вас скрипт стоит перед (выше) якорем, и на onload он не успевает загрузится, как Вы уже обращаетесь к нему. Попробуйте скрипт опустить ниже нужного элемента.

нет, дело не в якорях. даже если их убрать со страницы и переходить просто на страницу без # и запускать window.onload =podcut('cut4'); картина ровно та же

yashka525 16.09.2011 01:26

Цитата:

Сообщение от grafe
curr is null

Так это значит что он не может найти элемент с таким id. Проверьте чтоб скрипт видел все id.

grafe 16.09.2011 01:27

алсо при замене имён переменных та же картинка: curd is null

grafe 16.09.2011 01:29

Цитата:

Сообщение от yashka525 (Сообщение 126691)
Так это значит что он не может найти элемент с таким id. Проверьте чтоб скрипт видел все id.

ну как бы да)) но как такое может быть, ведь дело в том, что я и онкликом и онлоадом передаю одну и ту же строку
<div class="de_text de_head2 pointer" onclick="podcut(\'cut4\')" >

window.onload =podcut('cut4');


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