Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2010, 20:27
Аватар для eval
Интересующийся
Отправить личное сообщение для eval Посмотреть профиль Найти все сообщения от eval
 
Регистрация: 04.11.2010
Сообщений: 19

Передача аргумента методу при назначении события
Доброго времени суток )) помогите новичку
document.getElementById("dehide"+i+a).onmouseover= EventsMenu;
в таком состоянии работает прекрасно , а пытаясь сделать
document.getElementById("dehide"+i+a).onmouseover= EventsMenu(arg);
не получается...
варианты типа написать событие в html и передать там аргумент не предлагайте...
только в js
заранее спасибо...
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2010, 20:40
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

То, что ты хочешь сделать - бред!!! Если сможешь привести то, где у тебя проблема в 5-7 строчек кода, я постараюсь помочь сделать нормально
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2010, 20:56
Аватар для eval
Интересующийся
Отправить личное сообщение для eval Посмотреть профиль Найти все сообщения от eval
 
Регистрация: 04.11.2010
Сообщений: 19

мне нада узнать какое событие отрабатывает и на каком елементе без хтмл для создания 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";
//} 
}
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2010, 21:06
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Непонятно только, зачем arg??? Сделай так:
var IE6=/IE 6/;
if(IE6.test(navigator.userAgent)){
  if(this.style.backgroundColor == "#8000FF") this.style.backgroundColor = "#000000";
  else this.style.backgroundColor = "#8000FF";
};
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2010, 21:21
Аватар для eval
Интересующийся
Отправить личное сообщение для eval Посмотреть профиль Найти все сообщения от eval
 
Регистрация: 04.11.2010
Сообщений: 19

спасибо конечно но это немного не то...
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 вызывается по нескольку раз для поддерживания определённого эффекта... для того то мне и нада определять связку (событие + элемент)
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2010, 21:31
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

А вообще так делать не нужно!

<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>

Последний раз редактировалось monolithed, 04.11.2010 в 21:39.
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2010, 21:45
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Стоп! Это меню что ли? Тогда почему бы не сделать его через ссылки? Тогда и в ie6 все нормально будет
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2010, 23:42
Аватар для eval
Интересующийся
Отправить личное сообщение для eval Посмотреть профиль Найти все сообщения от eval
 
Регистрация: 04.11.2010
Сообщений: 19

спасибо вы оба натолкнули меня на разные варианты реализации ... всё-таки вариант с ссылками гораздо проще) + проверка браузера и подгрузка i6.css только при IE6 !!! что бы не мусорил html)
Ответить с цитированием
  #9 (permalink)  
Старый 10.11.2010, 20:01
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Есть еще "идиотский" способ оборачивать любой элемент условными комментами с тегом А.
Ответить с цитированием
  #10 (permalink)  
Старый 11.11.2010, 07:03
Аватар для eval
Интересующийся
Отправить личное сообщение для eval Посмотреть профиль Найти все сообщения от eval
 
Регистрация: 04.11.2010
Сообщений: 19

для наглядности приведу кусочек кода с метода ... для тех кто считал что этот способ для "..." сами понимаете =))))))))
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, но и для построения правильной логики скрипта!
всем спасибо за внимание)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Запрет события при выполнения другова Suharik Events/DOM/Window 3 07.05.2010 16:29
Срабатывание события при подведении к краю экрана Destrifer Общие вопросы Javascript 2 08.01.2009 15:12
Передача объекта как аргумента в eval MyNameIs Общие вопросы Javascript 3 05.10.2008 16:20