Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Хочу понять, где ошибка (https://javascript.ru/forum/project/7441-khochu-ponyat-gde-oshibka.html)

duron 01.02.2010 20:19

Я знаю html и css - надеюсь, на -4; сталкиваясь по ходу дела с js поднатыркался количественно настраивать скрипты под свои нужды, но вот суть, "душу" языка никак не могу ухватить; может у меня совершенно апрограммистские мозги.Теперь по сути:
html-файл с <img src="1.jpg" onclick="this.src=(this.src=='1.jpg')?'2.jpg':'1.j pg'" /> лежит у меня на локальной машине в одной папке с jpgами - как тут прописать абсолютный путь?

Я так понимаю задачу:

<img src="1.jpg" onclick="this.src='2.jpg'" onclick="вот как сюда впихнуть отмену предыдущего (onclick="this.src='2.jpg'") события и возврат к отображению исходного 1.jpg" />???

PeaceCoder 01.02.2010 20:49

<img src="1.jpg" onclick="this.src=(/\/1\.jpg$/i.test(this.src))?'2.jpg':'1.jpg'" />

duron 01.02.2010 21:50

Спасибо огромное, PeaceCoder, работает! (Профессор - он и есть профессор!)
А можно попросить объяснить происходящее? Посимвольно, если не трудно.

PeaceCoder 01.02.2010 22:17

я заменил проверку пути на регулярное выражение
/\/1\.jpg$/i
, которое просто проверяет тоже this.src=='1.jpg', только что бы оно было не точно равно, а необходимое содержалось в конце пути, т.к. он будет чтото типа http://ваш.домен/путь/к/странице/1.jpg, выделенную часть я и проверял

duron 01.02.2010 22:47

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

Это я к тому, что что в варианте, который надо было усовершенствовать (согласитесь, мелькание, связанное с onmouseover-onmouseout может раздражать пользователя, ибо действие это ему малоподконтрольно - всё происходит как бы само собой, ибо просто движение мышью чисто психологически не воспринимается за элемент управления), так вот, - в варианте

<img src="1.jpg" onmouseover="this.src='2.jpg'" onmouseout="this.src='1.jpg'" />

было ещё весьма необходимое дополнение:

<h4 id="one">A</h4>
<img src="1.jpg" onmouseover="this.src='2.jpg'; document.getElementById('one').innerHTML='B" onmouseout="this.src='1.jpg';document.getElementBy Id('one').innerHTML='A'" />

Можно ли "прикрутить" этот document.getElementById('one').innerHTML='..."

к варианту

<img src="1.jpg" onclick="this.src=(/\/1\.jpg$/i.test(this.src))?'2.jpg':'1.jpg'" />

P.S. Кстати, а что дают slashs /\? Я их для интереса убрал, а всё равно всё работает

PeaceCoder 01.02.2010 23:07

Цитата:

Сообщение от duron
P.S. Кстати, а что дают slashs /\? Я их для интереса убрал, а всё равно всё работает

это уже подробно надо читать что такое регулярные выражение и их синтаксис. в частности первый и последний / обозначают границы регулярного выражения, а внутри \/ и \. обозначают экранирование, которое будет сравниваться как / и . ,т.к. если не экранировать то эти символы будут считаться завершением рег.выражения и любой симовол.
А на счет прикрутить не получится. т.к. смена у тебя идет на 2 разных действия мыши, и соединить в одно к сожалению, не выйдет.

duron 02.02.2010 07:11

А вот ещё похожий и тоже рабочий пример:

<img src="1.jpg" onclick="this.src=(this.src.match(/1\.jpg$/))? 2.jpg':'1.jpg';" />

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

А что даёт двоеточие в конце записи - между '2.jpg':'1.jpg' ?

PeaceCoder 02.02.2010 14:49

Выше я описал что такое знак ? и дал ссылку. прочтите и все поймете.

micscr 02.02.2010 15:10

Мысли вслух:
Как то некошерно такую кодинку запихивать в теги вообще то .:-?

JsLoveR 05.02.2010 14:46

micscr,
:D


Часовой пояс GMT +3, время: 11:11.