не работает обращение к элементу по 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'); тоже не работает)) (срабатывает только первый алерт) |
window.onload = function() { podcut('cut4'); }; |
Цитата:
ну, всмысле даже первый алерт не срабатывает |
Может быть у Вас скрипт стоит перед (выше) якорем, и на onload он не успевает загрузится, как Вы уже обращаетесь к нему. Попробуйте скрипт опустить ниже нужного элемента.
|
1 не стоит для имён переменных использовать слова какие так или иначе использует язык-может работать а может не работать-это рендомно в зависимости от браузера.
2 поставь/открой дебагер |
дебаггер пишет
curr is null я же говорю, проблема в том, что почему-то не срабатывает getElementById |
Цитата:
|
Цитата:
|
алсо при замене имён переменных та же картинка: curd is null
|
Цитата:
<div class="de_text de_head2 pointer" onclick="podcut(\'cut4\')" > window.onload =podcut('cut4'); |
Телепаты в отпуске, дайте скрипт вместе с элементами к которым Вы обращаетесь.
|
А что у Вас везде стоит if(){}? Забыли про else if(){}?
|
Цитата:
не знаю, полезно будет, или нет, вот линк и скрипт. дальше в фаербаге всё) http://dogss-country.ru/index.php?sh...ry#a_selfeject http://dogss-country.ru/js/delivery.js |
когда выполняю через консоль podcut('cut4');
тоже соответственно работает как и при онклике |
function podcut(id) { alert(id); var curd=document.getElementById(id); //alert('it works!'+curd.style.height); if(curd.style.height!*!*==*/!*'auto') { curd.style.height='auto'; } else { curd.style.height='47px'; } } Нужно две равно ставить. |
не знал) всегда ставил != срабатывало так же как и !==
ну не суть, проблемы это не решает curd у нас определяется выше |
И вообще, сделайте display = block/none, зачем height менять?
|
госспади, да какая разница, проблема-то не в этом
|
Окей, по ссылке на сайт видно что скрипт стоит выше элементов. Поставте его после всех элементов, к которым он обращается.
|
http://javascript.ru/tutorial/events/intro
Цитата:
|
всем спасибо, джентльмены, особенно yashka525 )
проблема решилась, когда подключил js документ после вывода контента) спасибо Riim за ликбез) очень доходчиво и популярно. пардон, я пхпшник, потому в js как слон в посудной лавке) алсо по поводу синтаксиса онлоада: после того, как поместил вывод скрипта ниже контента оба варианта window.onload = podcut('cut4'); и window.onload = function() { podcut('cut4'); }; работают. и дебаггер по этому поводу не ругается. |
Часовой пояс GMT +3, время: 01:53. |