не получается присоединить функцию
function getProtocol(){
код функции
}
document.getElementById("d_s_m_menu").innerHTML += "<a id=\"protocolOfChanges\" href=\"#\">Протокол изменений</a><br/>";
document.getElementById("protocolOfChanges").addEventListener('click', getProtocol, false);
при нажатии на ссылку ничего не происходит если написать вызов функции ниже этого кода, она выполняется |
Подозреваю, что вы юзаете для проверки ie.
http://javascript.ru/tutorial/events...cialnye-metody |
Цитата:
|
Тогда всё работает.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
<div id='d_s_m_menu'></div>
<script type="text/javascript">
function getProtocol(){alert(1);}
document.getElementById("d_s_m_menu").innerHTML += '<a id="protocolOfChanges" href="#">Протокол изменений</a><br/>';
document.getElementById("protocolOfChanges").addEventListener('click', getProtocol, false);
</script>
</body>
</html>
|
вспомнил о таком методе дебага как комментирование всего и постепенное открытие
Ошибку сабжа вызывает эта строчка. Почему?
document.getElementById("d_s_m_menu").innerHTML += "<a href=\"https://de.ifmo.ru/servlet/distributedCDE?Rule=eRegister\">Электронный журнал</a><br/>";
|
Если сама ссылка появляется то хзхз.
Если же нет, то например d_s_m_menu ещё не появился на странице или innerHTML изначально пустое... P.S. То что в последнем примере в ссылке не прописан нужный id - это опечатка?) |
Больше никаких методов дебага не знаешь? document.getElementById("d_s_m_menu") нашелся? И вообще, текст ошибки можно было бы и выложить.
|
больше ничего не могу придумать
Firebug и Firefox молчат - никаких ошибок. ссылка, вызывающая ошибку появляется вот полный код http://pastebin.ru/311775 |
Цитата:
|
Перенос строки или это просто особенности вывода?(ну а вдруг=) )
|
Цитата:
|
Вообще innerHTML+= - моветон. Страница каждый раз перерисовывается. Забивайте всё, что надо добавить, в переменную, а уже её добавляйте в innerHTML. А ещё лучше - используйте appendChild() .
Это не решение проблемы - это оптимизация, но возможно в процессе оптимизации проблема отпадёт.)) |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Зашел на сайт http://de.ifmo.ru/
в консоли ввел document.getElementById("d_s_m_menu") результат null :blink: |
это меню есть только в приватной части сайта, регистрация невозможна(
|
так работает:
var dv = document.createElement('div');
dv.id = "d_s_m_menu";
document.body.appendChild( dv );
document.getElementById("d_s_m_menu").innerHTML += "<a href=\"https://de.ifmo.ru/servlet/distributedCDE?Rule=eRegister\">Электронный журнал</a><br/>";
document.getElementById("d_s_m_menu").innerHTML += "<a id=\"protocolOfChanges\" href=\"#\">Протокол изменений</a><br/>";
document.getElementById("protocolOfChanges").addEventListener('click',getProtocol, false);
И все нормально вызывается. А "d_s_m_menu" это что за элемент? |
Цитата:
|
| Часовой пояс GMT +3, время: 08:38. |