Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Скрипт, меняющий атрибут title у элемента (https://javascript.ru/forum/offtopic/12742-skript-menyayushhijj-atribut-title-u-ehlementa.html)

abc_ua 31.10.2010 22:29

Скрипт, меняющий атрибут title у элемента
 
На сайте есть оценка материалов, вот html код:

<ul id="uStarRating480" class="u-star-rating" title="Рейтинг: 0.0/0">
<li class="u-current-rating" id="uCurStarRating480" style="width:0%;"></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',1);return false;" class="u-one-star">1</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',2);return false;" class="u-two-stars">2</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',3);return false;" class="u-three-stars">3</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',4);return false;" class="u-four-stars">4</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',5);return false;" class="u-five-stars">5</a></li></ul>


Нужно, чтобы в зависимости от звездочки, на которую навели курсор, появлялся текст "плохо", "хорошо"...

Подкиньте пожалуйста идею как это реализовать

Gozar 31.10.2010 22:45

удалено.

abc_ua 31.10.2010 23:36

Gozar, спс.

Получилось:

$(function(){
 $(".u-star-li-480 a.u-one-star").mouseover(function(){document.getElementById("uStarRating480").title="Ужасно";});
 $(".u-star-li-480 a.u-two-stars").mouseover(function(){document.getElementById("uStarRating480").title="Плохо";});
 $(".u-star-li-480 a.u-three-stars").mouseover(function(){document.getElementById("uStarRating480").title="Средне";});
 $(".u-star-li-480 a.u-four-stars").mouseover(function(){document.getElementById("uStarRating480").title="Хорошо";});
 $(".u-star-li-480 a.u-five-stars").mouseover(function(){document.getElementById("uStarRating480").title="Шедевр";});
});


а через $ до title добраться не получилось(

Aetae 01.11.2010 00:44

>$(".u-star-li-480 a.u-one-star").mouseover(function(){document.getElementByI d("uStarRating480").title="Ужасно";});
>Ужасно

exec 01.11.2010 04:44

Если делать без говнокода, то можно попробовать вот так:

jQuery(function ($) {
	$(".u-star-li-480").mouseover(function (event) {
		var c = event.target.className.match(/-(\w+)-/)[1];
		if (c)
			$("#uStarRating480").attr("title", {
				one: "Ужасно",
				two: "Плохо",
				three: "Средне",
				four: "Хорошо",
				five: "Шедевр"
			}[c]);
	});
});

Gozar 01.11.2010 12:18

удалено.

exec 01.11.2010 12:40

Код ТС был написан путём нажатий Ctrl-C Ctrl-V, что есть главный признак говнокода.

abc_ua 01.11.2010 14:06

exec,
спасибо, постараюсь разобраться

Gozar 01.11.2010 15:50

удалено.

abc_ua 01.11.2010 15:58

Gozar,
он в два раза короче; интересно узнать какой работает быстрее

exec 01.11.2010 15:59

Gozar, всего один обработчик на один элемент (вместо пяти, как в варианте ТС-а) + мой код глаза не режет.

Gozar 01.11.2010 16:17

удалено.

2de 01.11.2010 16:46

Я бы так не сказал, наверное пожалуй не мение важный фактор жаваскрипта после его работоспособности это объем кода, так как скорость зависит от браузера и компа. К тому же его изменять проще, не нужно в каждой строчке изменять что то, а все один раз. И загружаться такая страничка будет быстрее.

Gozar 01.11.2010 16:52

удалено.

2de 01.11.2010 16:58

В данном случае никаких, но если писать большой проект с таким подходом то будет ощутимо. Хотя ИМХО использование JQuery для реализации только этого куска кода уже не совсем целесообразно.

Да и встречный вопрос, зачем писать лишний код если можно написать гораздо компактнее? Ведь по сути обычному пользователю фиолетово ему главное лишь бы работало стабильно.

Gozar 01.11.2010 17:01

удалено.

2de 01.11.2010 17:08

Цитата:

Сообщение от Gozar (Сообщение 76876)
Будет ощутимо вот что - Вы никогда не напишите большой проект. Если у вас 200 модулей написано и в каждый нужно втыкать по 5-10 минут, то проект загниёт, вас обгонят конкуренты, а вас уволят.

А какие конкуренты, не совсем понял суть, ведь проект ещё не сделан о каких конкурентах идет речь? А вот если проект сделан то изменить код будет проще чем конкуренты напишут такой же снуля. Если брать указанные цифры то получится 34 часа на изучение кода, но не весь же код прийдется изменять, а за такое время написать 200 модулей и оттестировать нереально.

Цитата:

Сообщение от Gozar (Сообщение 76876)
Затем что он понятнее и читабельнее.

Каждому свое, мне более важна его компактность.

Gozar 01.11.2010 17:12

удалено.

2de 01.11.2010 17:14

Цитата:

Сообщение от Gozar (Сообщение 76880)
аргумент не принят
сжатие js и css

Так сожмите оба варианта и увидите разницу.

Gozar 01.11.2010 17:15

удалено.

2de 01.11.2010 17:21

Вот ради прицнипа скопировал оба варианта реализации в блокнот:

С копипастом весит: 605 байт
Оптимизированый: 281 байт

Разница есть и ощутима, 50% экономии.

Gozar 01.11.2010 17:21

удалено.

Gozar 01.11.2010 17:23

удалено.

2de 01.11.2010 17:24

Цитата:

Сообщение от Gozar (Сообщение 76886)
каждый день будете тратить 34 часа на изучение, вспоминание, понимание? :)

Да время тратиться на изучение кода будет всегда даже в неэкономичном варианте. Человек не может запомнить всё так что это не аргумент.

2de 01.11.2010 17:26

Цитата:

Сообщение от Gozar (Сообщение 76887)
кем будет ощутима разница? Гордиться будете? Понятие простота расширяемости кода знакомо? Не встречали в объявлениях по приему на работу, умение разбираться в чужом коде?

Умение разбираться и умение писать это разные вещи. Если человек разберет компактный код, то не компактный темболее.

Gozar 01.11.2010 17:26

удалено.

Gozar 01.11.2010 17:30

удалено.

2de 01.11.2010 17:32

Да в любом коде приходится разбираться, в конце концов я же не заставляю Вас писать так а не иначе, как хотите так и пишите я выразил свою точку зрения и для меня важна компактность...

Gozar 01.11.2010 17:38

удалено.

abc_ua 01.11.2010 19:12

объясните пожалуйста, что значит
var c = event.target.className.match(/-(\w+)-/)[1];

?

Gozar 01.11.2010 19:52

удалено.

abc_ua 01.11.2010 20:20

"регулярное выражение", спс

B~Vladi 01.11.2010 20:20

Читабельность, конечно же, важна, но она не должна быть в ущерб производительности. Тем более, если речь идет о крупных проектах.
Для плохочитабельных (и не только) участков кода давным-давно придуманы комментарии. И не зря же в вакансиях пишут: "Умение читать чужой код".
На объем кода можно забить, если юзать компрессоры.

Gozar 01.11.2010 20:38

удалено.

Gozar 01.11.2010 20:40

удалено.

Gozar 01.11.2010 20:57

удалено.

Gozar 01.11.2010 21:24

удалено.

abc_ua 01.11.2010 21:44

Gozar,
проблема в том, что html код генерируется автоматически, так что title прописать я не могу

B~Vladi 01.11.2010 22:05

А какие проблемы с getElementById?

Gozar 01.11.2010 22:15

удалено.


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