НЕ работает onclick из внешнего .js
Помогите плиз решить проблему. Раньше у меня был этот же код который находился в основном файле html в тегах <script></script> и все замечательно работало. Потом я решил что нужно этот код оформить отдельным файлом и он перестал корректно работать.
внешний.js: window.onload = function () { ... function CreatMenu() { ... for (var i = 0; i < ceMenu; i++) $('<div id="M' + i + '" class="arc" onclick="testfunct()" >' + (menuList[curMenu][1 + i]) + '</div>').appendTo('#menu').css({ 'top': (yMenu - 25) + 'px', 'left': (xMenu - 25) + 'px' }); ... } function testfunct() { alert(); } ... } Выдает ошибку Uncaught ReferenceError: testfunct is not defined onclick Пытался сделать через EventHAndler - стало только хуже, поэтому решил пытаться допилить onclick. |
Ну если уж говнокодить, то допиши там
window.testfunct = testfunct; Ну или к той стремной jQuery цепочке добавь click(testfunct) |
Помогло, но хотелось бы узнать про решение не говнокодом)
|
Помогло, да не очень(
мне нужно вызывать функцию с параметром, в итоге имею: for (var i = 0; i < ceMenu; i++) $('<div id="M' + i + '" class="arc" >' + (menuList[curMenu][1 + i]) + '</div>').appendTo('#menu').css({ 'top': (yMenu - 25) + 'px', 'left': (xMenu - 25) + 'px' }) .click(testfunct( menuList[curMenu][1 + i]) ); Но выполняется скрипт не правильно. Должен alert возникать по нажатию на div, а он его вызывает при создании элемента сразу столько раз сколько было создано элементов( |
А не говнокодом - это забыть про событийные атрибуты и использовать хотя бы делегирование, а не вешать обработчик на каждый элемент. И нафига window.onload, если используется jQuery, в котором есть ready.
|
P.S.:
window.testfunct = testfunct; помог как надо, но хотелось бы узнать про решение через eventHander |
Цитата:
|
Цитата:
click(function(){ testfunct(params) }) |
Цитата:
|
Не, просто по суте же это одно и тоже? Или я путаю?
|
window.onload = function () { var script = document.createElement('script'); script.src = 'jquery.js'; script.type = 'text/javascript'; document.getElementsByTagName('head')[0].appendChild(script); А, ну и у меня jquery подключается позже чем объявляется функция готовности документа) |
Цитата:
|
О, спасибо огромное, не знал.
А вот такой вопрос, тоже по теме, как раз касательно того, почему я решил через onclick делать. допустим у меня есть элемент с id="M1" и я вешаю на него eventHandler клика. А потом я удаляю этот элемент и создаю другой но с таким же id но допустим обработчик уже не вешаю. Что в таком случае произойдет? |
Цитата:
|
Спасибо, тему считаю закрытой.
|
Часовой пояс GMT +3, время: 14:31. |