НЕ работает 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) }) |
Цитата:
|
Не, просто по суте же это одно и тоже? Или я путаю?
|
Часовой пояс GMT +3, время: 22:50. |