Глюк со сменой картинки

12
[Удален]
1047

Подскажите плиз.

Вот составил такой скриптик смены картинки при наведении мышкой, а чёто не пашет почемуто, хотя вроде всё верно. не могу понять в чём траблы. =((((

меняется картинка а потом обратно не возвращается.

хтмл

<td><a onMouseOver="imageOn('image1');" onMouseOut="imageOff('image1');" href="#"><img name="image1" src="images/but1on.gif" width="291px" height="30px" border="0" alt="Your Image title"></a></td>

scr.js

if (document.images)

{

var load = "no";

image1on = new Image(); image1on.src ="/images/but1on.gif";

image1off = new Image(); image1off.src ="/images/but1off.gif";

load = "yes";

}

function imageOff(imgName)

{if (load == "yes") {if (document.images) {document[imgName].src = eval(imgName + "off.src");}}}

function imageOn(imgName)

{if (load == "yes") {if (document.images) {document[imgName].src = eval(imgName + "on.src");}}}

Fuzzy
На сайте с 29.05.2005
Offline
27
#1

HTML:

<SCRIPT language="JavaScript" src="scr.js" type="text/javascript"></SCRIPT>


<IMG name="image1" src="images/but1off.gif" width="291px"
height="30px" border="0" alt="Your Image title"
onMouseOver="return setImage(this.name , 'on');"
onMouseOut="return setImage(this.name, 'off');">

JavaScript (scr.js):

function setImage (imgName, type) {

if (document.images) {
imgOff = new Object ();
imgOff[imgName] = new Image();
imgOff[imgName].src = "images/but1off.gif";
imgOn = new Object ();
imgOn[imgName] = new Image();
imgOn[imgName].src = "images/but1on.gif";
if (type == "on") {
document.images[imgName].src = imgOn[imgName].src;
return true;
}
else if (type == "off") {
document.images[imgName].src = imgOff[imgName].src;
return true;
}
}
return false;
}
MODx - бесплатная профессиональная среда разработки (CMF) и система управления сайтом (CMS) http://modx.ru (http://modx.ru) | http://modx.com/ (http://modx.com/)
[Удален]
#2

Да? А покороче нельзя чтобы хтмл особо не портить перед поисковиками?

Fuzzy
На сайте с 29.05.2005
Offline
27
#3
Yanhert:
Да? А покороче нельзя чтобы хтмл особо не портить перед поисковиками?

Хм.. куда уж короче :) Файл scr.js - это внешний файл. Можно конечно поизвращаться с

onMouseOver="return setImage(this.name , 'on');"
onMouseOut="return setImage(this.name, 'off');">

и попробовать вынести также во внешний файл, но это бессмысленно :)

Кстати, Ваш код был более длинный, вот это

<a onMouseOver="imageOn('image1');" onMouseOut="imageOff('image1');" href="#">

лишнее.

Kolyaj
На сайте с 28.03.2006
Offline
69
#4


<script type="text/javascript">
var img1 = new Image();
var img2 = new Image();
img1.src = 'img1.gif';
img2.src = 'img2.gif';
</script>
...
<img src="img1.gif" onMouseOver="this.src=img2.src" onMouseOut="this.src=img1.src">

Короче вроде некуда.

Fuzzy
На сайте с 29.05.2005
Offline
27
#5
Kolyaj:
Короче вроде некуда.

Ну да, только без проверок.. а вообще если это внешний JS файл, то какая разница, какой у него размер? Разве поисковики будут загружать внешние JS скрипты? :)

Kolyaj
На сайте с 28.03.2006
Offline
69
#6
Fuzzy:
Ну да, только без проверок..

А какие проверки здесь нужны?

Fuzzy:
а вообще если это внешний JS файл, то какая разница, какой у него размер? Разве поисковики будут загружать внешние JS скрипты?

Лично я считаю, что не будут загружать, только зачем лишний код нужен.

Fuzzy
На сайте с 29.05.2005
Offline
27
#7
Kolyaj:
А какие проверки здесь нужны?

Проверку на существование document.images.. Хотя конечно можно и забить на это, я обычно предпочитаю оставлять поддержку для устаревших браузеров. В принципе этот код можно переписать и вынести во внешний файл также и onMouseOver="..." onMouseOut="...", прописав для рисунка только класс. Другой вариант - это сделать замену изображения с помощью стилей, однако поддерживать его будут также только новые браузеры (кстати, этот вариант мне больше по душе, т.к. работает и при выключенном JS у клиента).

Kolyaj
На сайте с 28.03.2006
Offline
69
#8

Fuzzy, как-то вы все-таки усложняете код. Тут всего-то надо заменить src у картинки, а дополнительный код в начале страницы нужен лишь для того, чтобы не тормозило при первой подмене. Так к чему так много кода?

Fuzzy
На сайте с 29.05.2005
Offline
27
#9
Kolyaj:
Fuzzy, как-то вы все-таки усложняете код. Тут всего-то надо заменить src у картинки, а дополнительный код в начале страницы нужен лишь для того, чтобы не тормозило при первой подмене. Так к чему так много кода?

Так я пояснил вроде - для поддержки устаревших браузеров :) Однако не считаю это предельно важным, вообще в работе стараюсь использовать поменьше JS, т.к. многие его трюки выполняются с помощью CSS.

[Удален]
#10

и всётаки я не врубился) +)

Какой код более универсальный то? =)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий