[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Для тех кто не спит. JQuery )
m4a1fox
господа, tell me please. Вот такая ситуация. Вывод из БД

foreach($t as $key=>$value){
echo '<span id="rating" style="">'.$value['rating'].'</span>
<ol id="star-rating" style="float: right;">
<li><a href="#" class="star1">Ужасно</a></li>
<li><a href="#" class="star2">Плохо</a></li>
<li><a href="#" class="star3">Нормально</a></li>
<li><a href="#" class="star4">Хорошо</a></li>
<li><a href="#" class="star5">Отлично</a></li>
</ol><br />'
;
}

Тут выводятся в столбик значения - например так

20
50
50

И есть вот такая часть jquery

<script type="text/javascript">
jQ(document).ready(function () {
var rating = jQ("#rating").text();
if (rating != 0) {var rating5 = (rating - (rating % 20)) / 20;}
else {rating5 = 0;}

jQ(".star"+rating5).parent().attr("class","current");
jQ(".star"+rating5).parent().attr("style","width:"+rating+"px");
});
</
script>

Что она делает. Она принимает значения переменной, делит на 20... в общем находит среднее (грубо говоря).
А после вот тут

<ol id="star-rating" style="float: right;">
<li><a
href="#" class="star1">Ужасно</a></li>
<li><a
href="#" class="star2">Плохо</a></li>
<li><a
href="#" class="star3">Нормально</a></li>
<li><a
href="#" class="star4">Хорошо</a></li>
<li><a
href="#" class="star5">Отлично</a></li>
</ol>


Выводится это среднее в виде выделения определенного кол-ва звездочек.
То есть 1 звезда - 20, соответственно 50 - ровно 2,5 звезды.

Собственно теперь вопрос почему. Почему она обрабатывает только один элемент из цикла, а именно тот кот. идет первым? Как сделать так, что бы она повторяла свои действия по сущ. значения?


 ! 

М
Перенес в  Клиентская сторона ► JavaScripts
Invis1ble




Спустя 7 минут, 13 секунд (9.09.2011 - 00:08) Игорь_Vasinsky написал(а):
ох бедалага.. всё маешся с рейтингом, ну есть же масса готовых скриптов..правда я не проверял rolleyes.gif

Спустя 4 минуты, 19 секунд (9.09.2011 - 00:12) m4a1fox написал(а):
Игорь_Vasinsky
Вот не поверишь! Все не то! Вот как бы ты ответил на первый пост темы? Как это сделать?

Спустя 5 минут, 36 секунд (9.09.2011 - 00:18) Игорь_Vasinsky написал(а):
я честно говоря в твоём первом посте потерялся и не совсем понял...

у тя foreach не справляется или кто?

Спустя 3 минуты, 33 секунды (9.09.2011 - 00:22) m4a1fox написал(а):
Игорь_Vasinsky
Подозреваю что выборка в jquery не правильно написана. Она написана, для одного элемента, а у меня ну хотя бы три. И срабатывает только для первого, а для второго просто повторяет это же значение. Как-то так короче.

Спустя 11 минут, 10 секунд (9.09.2011 - 00:33) Invis1ble написал(а):
Цитата
foreach($t as $key=>$value){
echo '<span id="rating" style="">'.$value['rating'].'</span>

100500 раз уже писалось, что id должен быть уникален во всем DOM'е

Спустя 1 минута, 48 секунд (9.09.2011 - 00:35) Игорь_Vasinsky написал(а):
гы.. действительно в foreach клонируешь ID

Цитата
      echo '<span id="rating" style="">'.$value['rating'].'</span>


формируй динамически, дописывай цифру чтоли...

Спустя 38 секунд (9.09.2011 - 00:35) m4a1fox написал(а):
Invis1ble
блиииииииииин. Было такое. Припоминаю. Такс... как тогда поступить?



Спустя 59 секунд m4a1fox написал(а):
Игорь_Vasinsky
Цитата
формируй динамически, дописывай цифру чтоли...

Ага! smile.gif А как тогда выбрать его?

Спустя 1 минута, 10 секунд (9.09.2011 - 00:36) Invis1ble написал(а):
зачем цифры лепить, если можно классом сделать
$('.rating').each(function() {
alert($(this).text())
})

Спустя 4 минуты, 14 секунд (9.09.2011 - 00:41) Игорь_Vasinsky написал(а):
Цитата
зачем цифры лепить, если можно классом сделать

всё гениальное просто..

Invis1ble
я скора фигурку слеплю, будешь вместо идола у меня, буду те молиться, здоровья просить, и чтоб буковки на клаве не стирались.... и стану я язычником. biggrin.gif

Спустя 41 секунда (9.09.2011 - 00:41) m4a1fox написал(а):
Игорь_Vasinsky
Ха ха! Very funny!

Спустя 2 минуты, 20 секунд (9.09.2011 - 00:44) Invis1ble написал(а):
Игорь_Vasinsky
Цитата
я скора фигурку слеплю, будешь вместо идола у меня, буду те молиться, здоровья просить, и чтоб буковки на клаве не стирались.... и стану я язычником.

"не сотвори себе кумира" © Библия программиста smile.gif


пример кода смотри в посте выше

Спустя 1 минута, 17 секунд (9.09.2011 - 00:45) Игорь_Vasinsky написал(а):
Так я аттеист ohmy.gif

Спустя 1 минута, 12 секунд (9.09.2011 - 00:46) Invis1ble написал(а):
Игорь_Vasinsky
Цитата
Так я аттеист

значит читай с зачеркнутым словом wink.gif

Спустя 3 минуты, 34 секунды (9.09.2011 - 00:50) m4a1fox написал(а):
Invis1ble
Цитата
зачем цифры лепить, если можно классом сделать

НЕ получается так выбрать чего то!

Спустя 1 минута, 47 секунд (9.09.2011 - 00:51) Invis1ble написал(а):
m4a1fox
код в студию

Спустя 2 минуты, 38 секунд (9.09.2011 - 00:54) m4a1fox написал(а):
Invis1ble
jQ('#rating').each(function() {
(jQ(this).text())
});
if (rating != 0) {var rating5 = (rating - (rating % 20)) / 20;}
else {rating5 = 0;}

jQ(".star"+rating5).parent().attr("class","current");
jQ(".star"+rating5).parent().attr("style","width:"+rating+"px");

Спустя 3 минуты, 12 секунд (9.09.2011 - 00:57) Invis1ble написал(а):
m4a1fox
голову включи. я показал пример с классом, а ты опять id воткнул. И откуда переменная rating возьмется? И пользуйся firebug например, чтобы видеть ошибки js.

Спустя 18 секунд (9.09.2011 - 00:58) Игорь_Vasinsky написал(а):
Может

    <script type="text/javascript">
jQ(document).ready(function () {
var rating = jQ(".rating").text();
if (rating != 0) {var rating5 = (rating - (rating % 20)) / 20;}
else {rating5 = 0;}

jQ(".star"+rating5).parent().attr("class","current");
jQ(".star"+rating5).parent().attr("style","width:"+rating+"px");
});
</
script>


+ класс в foreach вместо ID


Цитата
И пользуйся firebug например, чтобы видеть ошибки js.


Google Chrome - F12

Спустя 48 секунд (9.09.2011 - 00:58) m4a1fox написал(а):
Invis1ble
Цитата
голову включи

Действительно, чего туплю совсем!
Цитата
И пользуйся firebug например, чтобы видеть ошибки js.

Им как раз и пользуюсь!

Спустя 2 минуты, 17 секунд (9.09.2011 - 01:01) Invis1ble написал(а):
m4a1fox
Цитата
Им как раз и пользуюсь!

Ну так смотри ошибки, должна была быть ошибка типа "Undefined variable" или что-то вроде этого



Спустя 1 минута Invis1ble написал(а):
Цитата
Google Chrome - F12

в последнее время разочаровываюсь в ff из-за тормознутости, сейчас тоже на хром пересел smile.gif

Спустя 3 минуты, 47 секунд (9.09.2011 - 01:04) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
+ класс в foreach вместо ID

С классом вообще отказывается работать

Спустя 5 минут, 20 секунд (9.09.2011 - 01:10) Invis1ble написал(а):
$(document).ready(function () {
$('.rating').each(function() {
var rating = $(this).text()
var rating5 = rating != 0 ? (rating - (rating % 20)) / 20 : 0
$('.star' + rating5).parent().attr('class', 'current')
$('.star' + rating5).parent().css('width', rating + 'px')
})
})

так попробуй

Спустя 19 минут, 13 секунд (9.09.2011 - 01:29) Игорь_Vasinsky написал(а):
m4a1fox
богу нам на него молиться надо.... точно говорю...

Спустя 3 минуты, 4 секунды (9.09.2011 - 01:32) m4a1fox написал(а):
Invis1ble
Да, значения правильно приходят, только все равно зараза такая не выделяет не равномерно. Ровно посередине все выделело - все 3 вывода. Короче - бред какой-то получается.



Спустя 42 секунды m4a1fox написал(а):
Игорь_Vasinsky
Предлагаю так же песню молитвенную сочинить на древнерусском!

Спустя 6 минут, 19 секунд (9.09.2011 - 01:38) m4a1fox написал(а):
Invis1ble
Игорь_Vasinsky
Скрипт выводит, то есть меняет стиль, после того как ссумирует все значения, и принимает общую цифру, после чего выделяет необходимое кол-во звездочек.

Спустя 1 минута (9.09.2011 - 01:39) Invis1ble написал(а):
m4a1fox
Цитата
Ровно посередине все выделело - все 3 вывода. Короче - бред какой-то получается.

Цитата
(rating - (rating % 20)) / 20

вот тут ты, имхо, что-то намудрил... ну и в верстке может тоже...
ладно, я спать

Спустя 2 минуты, 2 секунды (9.09.2011 - 01:41) Игорь_Vasinsky написал(а):
Цитата
зачем цифры лепить, если можно классом сделать

значит всётаки лепить, т.к. одинаковый ID по определению не проканает, а одинаковый класс - сделает всё для всех одинаково...

p/s и для себя фигурку слеплю wink.gif

Спустя 1 минута, 8 секунд (9.09.2011 - 01:43) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
для себя фигурку слеплю
Из глины?

Спустя 2 минуты, 36 секунд (9.09.2011 - 01:45) Игорь_Vasinsky написал(а):
ну не из г**** же biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif

UPD: мы снова в трёху тут!!! как 3 парасёнка biggrin.gif biggrin.gif нюф-нюф, наф-наф и ниф-ниф....

чур я ниф-ниф wink.gif

Спустя 6 минут, 46 секунд (9.09.2011 - 01:52) m4a1fox написал(а):
Блин! Ну я хотел быть Ниф-Нифом. Ладно, бери себе. Тогда я чур - Наф-Наф!

Спустя 11 минут, 32 секунды (9.09.2011 - 02:03) Invis1ble написал(а):
foreach($t as $key=>$value){
echo '<span class="rating" style="">'.$value['rating'].'</span>
<ol class="star-rating" style="float: right;">
<li><a href="#" class="star1">Ужасно</a></li>
<li><a href="#" class="star2">Плохо</a></li>
<li><a href="#" class="star3">Нормально</a></li>
<li><a href="#" class="star4">Хорошо</a></li>
<li><a href="#" class="star5">Отлично</a></li>
</ol><br />'
;
}

star-rating - тоже классом нужно сделать
$(document).ready(function () {
$('.rating').each(function() {
var rating = $(this).text()
var rating5 = rating != 0 ? (rating - (rating % 20)) / 20 : 0
var li = $(this).next('.star-rating').find('.star' + rating5).parent()
li.attr('class', 'current')
li.css('width', rating + 'px')
})
})


UPDATE. Ну и rating - тоже класс. Копипаста - зло

Спустя 3 минуты, 14 секунд (9.09.2011 - 02:07) m4a1fox написал(а):
Invis1ble
Секунду. Попробую!



Спустя 11 минут, 40 секунд m4a1fox написал(а):
Invis1ble
Пойду песню сочинять. Спасибо! Работает четко! Еще раз спасибо!

Спустя 13 минут, 52 секунды (9.09.2011 - 02:21) Invis1ble написал(а):
Ок, давай. Потом как-нибудь споешь smile.gif
Все, теперь я точно спать.

Спустя 10 минут, 14 секунд (9.09.2011 - 02:31) m4a1fox написал(а):
Invis1ble
Прочитаю... не пою... да и как те спеть, ты ж.... ну да ладно! НО я еше обращусь если что....
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.