2 onmouseover

  • Автор темы liven
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

liven

Гость
#1
Есть небольшая проблемка... Как при наведении на текстовую ссылку заставить изменяться 2 картинки? Есть следующая функция (писал ее не я, потому и вопросы):

Код:
function MM_preloadImages() {
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
 var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
 if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() {
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) {
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
 d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() {
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
и собственно onmouseover в теге <a>:


Код:
<td><img src="images/bullet_2.gif" name="new" id="new" width="7" height="33" border=0></td>

<li><a href="#" onMouseOver="MM_swapImage('back','','images/bullet_dn.gif',1); MM_swapImage('new','','images/bullet_dn_2.gif',1)" onMouseOut="MM_swapImgRestore()">автоплощадка</a></li>

<td><img src="images/bullet.gif" name="back" id="back" width="7" height="33" border=0></td>

в таком варианте, при наведении на ссылку все работает, но onmouseout восстанавливает только картинку 'new', а 'back' остается 'images/bullet_dn.gif' (активная картинка)... В чем может быть дело? или может кто другую функцию подскажет?
 
?

????

Гость
#2
liven
Вот тебе небольшой тутор на эту тему (самому разбираться влом) - тынц

Вот тебе ещё код сгенерированный FronPage2003 для одной кнопочки с картинками:

Код:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Новая страница 1</title>
<script language="JavaScript">
<!--
function FP_swapImg() {//v1.0
var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
elm.$src=elm.src; elm.src=args[n+1]; } }
}

function FP_preloadImgs() {//v1.0
var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; }
}

function FP_getObjectByID(id,o) {//v1.0
var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
return null;
}
// -->
</script>
</head>

<body onload="FP_preloadImgs(/*url*/'button3.jpg',/*url*/'button4.jpg')">

<p>
<img border="0" id="img1" src="button2.jpg" height="20" width="100" alt="Текст кнопки" onmouseover="FP_swapImg(1,0,/*id*/'img1',/*url*/'button3.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img1',/*url*/'button2.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img1',/*url*/'button4.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img1',/*url*/'button3.jpg')" fp-style="fp-btn: Glow Capsule 6" fp-title="Текст кнопки"></p>

</body>

</html>
 
L

liven

Гость
#3
Да собственно как менять картинку при наведении я знаю, вопрос в другом, как заставить работать 2 onmouseover в одном теге <a> ???? У меня при наведении на ссылку должны меняться 2 картинки по бокам от ссылки. Меняются они обе, но вот когда убираешь курсор от ссылки, в первоначальное положение возвращается только одна... :huh:

Сразу я писал 2 onmouseover и у меня вообще 1 картинка не менялась, пока не додумался сделать 1 onmouseover разделив точкой с запятой вызовы функций... теперь вот с onmouseout надо что-то делать....
 
L

liven

Гость
#4
Да собственно любые события OnMouse[...] также неккоректно работают, когда их по несколько штук в одном теге, так что вопрос о том, какой синтаксис написания нескольких одинаковых событий в одном теге?????
 
?

????

Гость
#5
liven
А сложно из одной функции вызывать другую? Одно событие, в котором вызываются две функции?
 
Статус
Закрыто для дальнейших ответов.