ОБСУЖДЕНИЕ

2 onmouseover

4 ответов 6,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Есть небольшая проблемка... Как при наведении на текстовую ссылку заставить изменяться 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' (активная картинка)... В чем может быть дело? или может кто другую функцию подскажет?
 
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>
 
Да собственно как менять картинку при наведении я знаю, вопрос в другом, как заставить работать 2 onmouseover в одном теге <a> ???? У меня при наведении на ссылку должны меняться 2 картинки по бокам от ссылки. Меняются они обе, но вот когда убираешь курсор от ссылки, в первоначальное положение возвращается только одна... :huh:

Сразу я писал 2 onmouseover и у меня вообще 1 картинка не менялась, пока не додумался сделать 1 onmouseover разделив точкой с запятой вызовы функций... теперь вот с onmouseout надо что-то делать....
 
Да собственно любые события OnMouse[...] также неккоректно работают, когда их по несколько штук в одном теге, так что вопрос о том, какой синтаксис написания нескольких одинаковых событий в одном теге?????
 
liven
А сложно из одной функции вызывать другую? Одно событие, в котором вызываются две функции?
 
Статус
Закрыто для дальнейших ответов.