![]() |
переменные для events
как передать функции javascript, которая цепляется на событие, переменные???
да еще, чтоб работало и под IE и под FF??? например мне надо на некий созданный мною объект повесить onmouseover я делаю так: Код:
document.getElementById('element_id').onmouseower = function(e) { я попробовал так: Код:
document.getElementById('element_id').onmouseower = function(v) { и на onmouseover ничего не происходит что делать??? |
При обработке события в функцию-обработчик передается объект события, во втором примере Вашего кода он будет под переменной v. Т.е. Ваше предположение v=myvar неверно. А выполняется функция потому, что идет по сути ее вызов ввиду соблюдения синтаксиса "funcName(params)". То, что JS позволяет вам использовать определение тела функции и тут же ее вызов это его особенность, вот Вы ею и пользуйтесь. Правда это Вам вовсе не нужно, верно? Тогда помогут внешние переменные относительно контекста функции обработчика (частный случай - глобальные). Еще, на любителя, вариант - это обертка какой-то конечной функциональности в некий класс и назначение обработчиками методы этого класса, тогда приватные свойства класса могут решать поставленную Вами задачу - быть видимыми обработчику и невидимыми извне.
|
немного не въехал в написанное... это что же мне надо вызывать функцию примерно так??? (с глобальными переменными):
Код:
<tagname onmouseover="javascript:a='myval';domymouseover();"> Код:
myobj.onmouseover = 'a=\'myval\';domymouseover();' использование классов мне также ничего не даст... ну создам я класс с нужными мне переменными... и что??? туда ведь тоже надо значения передавать где-то... зы использовать конструкцию в описанном примере я подсмотрел в набле куроводства там она работает - сам проверял |
В какой именно набле? Можно ссылку?
1) Да, используйте глобальные переменные. 2) Код Код:
myobj.onmouseover = 'a=\'myval\';domymouseover();' Код:
myobj.onmouseover = 'domymouseover();' 3) Присваивать обработчики событий можно (имхо, лучше) с помощью следующей функции (взятой там же, где и наблы): Код:
function addEvent(elt, name, handler, atEnd) { Код:
addEvent(fields.login, 'onkeydown', function(e) { |
все решилось гораздо проще, правда, как-то некрасиво:
Код:
eval('document.getElementById(\'element_id\').onmouseower = function(e) {'+ Цитата:
|
Цитата:
Так ведь проще: Код:
var myvar = 'myvar_value'; |
может быть это я некорректно поставил задачу...
но этих myvar - множество что-то вроде: Код:
for (i = 0; i < myvar.length; i++) { тут другая проблема возникает: когда я создаю объект и прописываю ему event (не важно какой), то всё ок если же я создаю этот объект внутри другого объекта, то event не отвечает... в какую сторону копать??? |
1)
Код:
function createHandler(myvar_i) { 2) Приведите проблемный код, я не догоняю, видимо конец рабочего дня сказывается. |
решение оказалось неожиданно простым!!!
использование функции addEvent поначалу оказалось безрезультатным. надо было лишь отказаться от innerHTML!!! в пользу elt.appendChild(document.createTextNode(text)) всё замечательно, только вот как теперь сделать так, чтобы текст с имеющимися тэгами был именно в виде HTML, т.е. без преобразования html символов в их сущности??? |
VeshchiyOleg, я буду пытаться помочь Вам, если Вы будете вводить меня в курс проблемы, мой навык телепатии на зачаточном уровне. А то Вы прыгаете на одних понятных Вам вещах, а вопросы задаете мне... в частности.
|
Вложений: 1
я всё понимаю, мне тоже нелегко выщемить проблемное место...
попытаюсь описать проблему как можно подробнее я пишу чат и делаю popup меню по правой кнопке мыши (в прилагаемом архиве картинка) правая часть чата - список присутствующих, заполняется ф-ей TeamsUpdate (строка 460 в chat.js) левая верхняя - собсна окно сообщений (ChatUpdate - [chat.js:253]) сообщение состоит из имени говорящего (объект с событием по правому клику мыши) и собсна текста сообщения - ajax`ом из бд подгружается (может содержать html-тэги - смайлики, например) собственно сообщения пишутся в строках 279-290 (chat.js) меню отображается ф-ей visibleMenu() (popup.js:31) объекты создаются ф-ями: - участник в окне чата: tObj (chat.js:225) - участник в списке (потом объединю с ф-ей tObj): teamObj (chat.js:169) - сообщение - непосредственно в цикле - (chat.js:280) файлы сейчас в том виде, как есть у меня перед выкладыванием на сервер я их естессно почищу от мусора так что извините за неудобства если что собсна проблемы ПОКА кончились ;) теперь привожу всё в божеский вид картинки в div`е не кэшируются: справа в списке участников у каждого по три картинки - приват, инфа и блок каждый раз при обновлении списка ВСЕ картинки подгружаются... т.е. если 100 участников, то грузится 300 картинок (!!!) где рыть??? как решить??? кто-нить с таким сталкивался??? |
Время: 12:55. |
Время: 12:55.
© OSzone.net 2001-