Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2011, 23:06
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

не работает обращение к элементу по 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');

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

Последний раз редактировалось grafe, 16.09.2011 в 00:04.
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2011, 23:44
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

window.onload = function() {
    podcut('cut4');
};
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2011, 00:01
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

Сообщение от ваый Посмотреть сообщение
window.onload = function() {
    podcut('cut4');
};
а так- вообще не работает)
ну, всмысле даже первый алерт не срабатывает
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2011, 00:08
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Может быть у Вас скрипт стоит перед (выше) якорем, и на onload он не успевает загрузится, как Вы уже обращаетесь к нему. Попробуйте скрипт опустить ниже нужного элемента.
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2011, 00:13
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

1 не стоит для имён переменных использовать слова какие так или иначе использует язык-может работать а может не работать-это рендомно в зависимости от браузера.
2 поставь/открой дебагер
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2011, 00:22
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

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

Последний раз редактировалось grafe, 16.09.2011 в 00:25.
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2011, 00:24
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

Сообщение от yashka525 Посмотреть сообщение
Может быть у Вас скрипт стоит перед (выше) якорем, и на onload он не успевает загрузится, как Вы уже обращаетесь к нему. Попробуйте скрипт опустить ниже нужного элемента.
нет, дело не в якорях. даже если их убрать со страницы и переходить просто на страницу без # и запускать window.onload =podcut('cut4'); картина ровно та же
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2011, 00:26
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Сообщение от grafe
curr is null
Так это значит что он не может найти элемент с таким id. Проверьте чтоб скрипт видел все id.
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2011, 00:27
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

алсо при замене имён переменных та же картинка: curd is null
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2011, 00:29
Аватар для grafe
Интересующийся
Отправить личное сообщение для grafe Посмотреть профиль Найти все сообщения от grafe
 
Регистрация: 15.09.2011
Сообщений: 17

Сообщение от yashka525 Посмотреть сообщение
Так это значит что он не может найти элемент с таким id. Проверьте чтоб скрипт видел все id.
ну как бы да)) но как такое может быть, ведь дело в том, что я и онкликом и онлоадом передаю одну и ту же строку
<div class="de_text de_head2 pointer" onclick="podcut(\'cut4\')" >

window.onload =podcut('cut4');

Последний раз редактировалось grafe, 16.09.2011 в 00:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 00:03
Не работает в експлоере обращение к массиву vitaliy11 Javascript под браузер 3 22.11.2010 21:20
Почему код работает? (обращение к форме из window) Василий Б. Элементы интерфейса 10 21.04.2010 09:10
Обращение к элементу внутри метода .ajax() roma86 jQuery 2 19.03.2010 20:52
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 14:59