Проблема с выводом переменной.
Есть задача с помощью jquery превращать число в соответствующее количество звездочек и дополнять пустыми. Написал такой код:
$(document).ready(function (){
var k = $('.star').html();
var star = '';
for (var i = 0; i < k; i++) {
star =star + "<img src='/img/description/full_star.jpg' />";
}
for (var i = k; i < 5; i++) {
star =star + "<img src='/img/description/empty_star.jpg' />";
}
alert(star);
$('.star').html("begin"+star+"end");
});
Алерт работает дважды. Выводит сначала то, что нужно( 5 тегов img), затем выводит пусто. В итоге на странице в нужных местах просто beginend . Подскажите, пожалуйста, что я делаю не так. Почему alert дважды работает? |
С двойным алертом разобрался: случайно этот скрипт 2 раза подключал. переписал этот кусок так:
alert(star);
$('.star').html("begin"+star+"end");
alert(star);
Оба раза алерт нужное выводит, но в нужное место все равно beginend выводит. |
Если у вас на странице несколько классов star, то по хорошему их надо тоже складывать в массив и выполнить это код для каждого star, возможно ошибка у вас из-за этого
У меня работает нормально, единственное, что бы исправил это star +="<img src='/img/description/full_star.jpg' />"; так ведь проще и нагляднее, и то же самое |
:write: Iktash,
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function(){
$(".star").each(function(indx, element){
var k = +$(element).html();
var star = '';
for (var i = 0; i < 5; i++) {
star +=i < k ? "<img src='http://javascript.ru/forum/images/smilies/dance3.gif' />":"<img src='http://javascript.ru/forum/images/smilies/agree.gif' />";
}
$(element).html(star)
});
});
</script>
</head>
<body>
<div id = '1' class = 'star'>1</div>
<div id = '2' class = 'star'>2</div>
<div id = '4' class = 'star'>3</div>
<div id = '5' class = 'star'>4</div>
<div id = '7' class = 'star'>5</div>
</body>
</html>
|
Олег, я попробовал сделать только один div с id="star" . Переписал вот так:
$(document).ready(function (){
var k = $('#star').html();
var star = '';
for (var i = 0; i < k; i++) {
star += "<img src='/img/description/full_star.jpg' />";
}
for (var i = k; i < 5; i++) {
star += "<img src='/img/description/empty_star.jpg' />";
}
$('#star').html(star);
});
Все равно пусто выводит. В чем еще может быть косяк? Алерт в этом же месте все выводит верно. Если вместо html ставить text, то выводить теги img прямо на страницу. Видимо я не правильно понимаю функцию .html Прошу помощи. Заранее спасибо. |
Рони, спасибо огромное. Ваш код работает. Как, Вы наверное догадались - я полный новичек в js (2 недели занимаюсь). Был бы очень благодарен, если бы Вы пояснили в чем именно моя ошибка была. Я честно не очень понял, когда выполняется $(function(){ - это не то же самое, что $(document).ready(function (){ ??
|
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 15:12. |