Передача аргумента методу при назначении события
Доброго времени суток )) помогите новичку :)
document.getElementById("dehide"+i+a).onmouseover= EventsMenu; в таком состоянии работает прекрасно , а пытаясь сделать document.getElementById("dehide"+i+a).onmouseover= EventsMenu(arg); не получается... варианты типа написать событие в html и передать там аргумент не предлагайте... только в js заранее спасибо... |
То, что ты хочешь сделать - бред!!! Если сможешь привести то, где у тебя проблема в 5-7 строчек кода, я постараюсь помочь сделать нормально
|
мне нада узнать какое событие отрабатывает и на каком елементе без хтмл для создания div:hover IE 6-му (в нём собственно и проблема)
мне нужно узнать какое событие сработало over или out и на каком елементе - что-то типа такого: var IE6=/IE 6/; if(IE6.test(navigator.userAgent)){ //if(over && this.id){ где over или out - событие которое надо узнать... document.getElementById(this.id).style.backgroundColor = "#8000FF"; //}else{ document.getElementById(this.id).style.backgroundColor = "#000000"; //} } |
Непонятно только, зачем arg??? Сделай так:
var IE6=/IE 6/; if(IE6.test(navigator.userAgent)){ if(this.style.backgroundColor == "#8000FF") this.style.backgroundColor = "#000000"; else this.style.backgroundColor = "#8000FF"; }; |
спасибо конечно но это немного не то...
window.onload = function() { var menuElems=document.getElementById('menu').getElementsByTagName('td'); for(i=0;i<menuElems.length-1;i++){ document.getElementById("main"+i).onmouseover=EventsMenu; document.getElementById("main"+i).onmouseout=EventsMenu; var sub_menu=document.getElementById('hide'+i).getElementsByTagName('div').length; for(a=0;a<sub_menu;a++){ document.getElementById("dehide"+i+a).onmouseover=EventsMenu; document.getElementById("dehide"+i+a).onmouseout=EventsMenu; } } } function EventsMenu(){ var pattern=/main/; if(pattern.test(this.id)) { var MainId=this.id.substr(4,1); show('hide'+MainId,135,5); } else { var MainId=this.id.substr(2,5); show(MainId,135,5); var IE6=/IE 6/; if(IE6.test(navigator.userAgent)){ if(this.style.backgroundColor = "#232323") {this.style.backgroundColor = "#8000FF";} else {this.style.backgroundColor = "#232323";} } } } не отработал скрипт...(( хотя это и так было понятно !!! дело в том что метод show вызывается по нескольку раз для поддерживания определённого эффекта... для того то мне и нада определять связку (событие + элемент) |
А вообще так делать не нужно!
<div class="class1"></div> <style type="text/css"> div{width: 100px; height: 100px;} .class1 {background: #000000;} .class2 {background: #8000FF;} </style> <script type="text/javascript"> window.onload = function(){ if(!/IE(6).+Win/.test(navigator.userAgent)){ var input = document.getElementsByTagName('div')[0]; var items = ["mouseover", "mouseout"]; for (var i = 0; i < items.length; i++){ (function(){ var item = items[i]; input['on'+item] = function(){ this.className = (this.className == 'class2') ? 'class1' : 'class2'; }; })(); } } }; </script> |
Стоп! Это меню что ли? Тогда почему бы не сделать его через ссылки? Тогда и в ie6 все нормально будет
|
спасибо вы оба натолкнули меня на разные варианты реализации ... всё-таки вариант с ссылками гораздо проще) + проверка браузера и подгрузка i6.css только при IE6 !!! что бы не мусорил html)
|
Есть еще "идиотский" способ оборачивать любой элемент условными комментами с тегом А.
|
для наглядности приведу кусочек кода с метода ... для тех кто считал что этот способ для "..." сами понимаете =))))))))
dd.prototype.init=function(p,c){ a=c; var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0; for(i;i<l;i++){ var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i]; h.onmouseover=new Function(this.n+'.st('+i+',true)'); h.onmouseout=new Function(this.n+'.st('+i+')'); } } обратите внимание на назначение событий элементам и передача аргумента при этом... это ведь то что я спрашивал в самом начале темы ) оказалось что мне нада эти аргументы не только для hovera, но и для построения правильной логики скрипта! всем спасибо за внимание) |
Часовой пояс GMT +3, время: 20:19. |