Завис в делении (Яваскрипт). Подскажите где ошибка!!

D
На сайте с 20.09.2010
Offline
175
508

var w=(total_reiting * rating_count + user_votes) * 27 / (rating_count + 1) ;

total_reiting = 4

rating_count = 1

user_votes = 1

Должно же получиться 67.5, но яваскрипт показывает результат - 12.27

Как такое может быть?

C
На сайте с 26.10.2013
Offline
54
#1

https://jsfiddle.net/d19gLwsr/

Алертит 67,5

Давайте весь код

Услуги по парсингу данных (/ru/forum/939826), единоразовый и регулярный сбор данных. Любые объемы. Скрипты на PHP, создание и доработка, решение проблем с сайтами Пишите в личные сообщения или скайп
D
На сайте с 20.09.2010
Offline
175
#2

Да тействительно.. И где же оно переобозначивает значение переменной. Подскажите, а то "вишу" уже 2,5 часа

Скрипт голосовалок звездочками, вот его обработчик:

<script language="javascript">
var home_url = 'siteurl.net';
var total_reiting = "4";
var id_arc = "23";
var rating_count = "1";
var refresh = 'siteurl.net';

$(document).ready(function(){
//total_reiting = ; // итоговый ретинг
//id_arc = {$data.rating_count}; // id статьи
var star_widht = total_reiting*27 ;
$('#raiting_votes').width(star_widht);
$('#raiting_info h5').append(total_reiting);
he_voted = $.cookies.get('article'+id_arc); // проверяем есть ли кука?
if(he_voted == null){
$('#raiting').hover(function() {
$('#raiting_votes, #raiting_hover').toggle();
},
function() {
$('#raiting_votes, #raiting_hover').toggle();
});
var margin_doc = $("#raiting").offset();
$("#raiting").mousemove(function(e){
var widht_votes = e.pageX - margin_doc.left;
if (widht_votes == 0) widht_votes =1 ;
user_votes = Math.ceil(widht_votes/27);
$('#raiting_hover').width(user_votes*27);
});
// отправка
$('#raiting').click(function(){
$('#raiting_info h5, #raiting_info img').toggle();
$.get(
'http://' + home_url + '/rate.php', // Здесь просто исполняется запрос в базу ничего не возвращая назад
{id_arc: id_arc, user_votes: user_votes},
function(data){
$("#raiting_info div").html(data);
var w=(total_reiting * rating_count * 27 + user_votes * 27) / (rating_count + 1);
alert(w+' '+total_reiting+' '+rating_count+' '+user_votes);
$('#raiting_votes').width(w);
$('#raiting_info h5, #raiting_info img').toggle();
//$.cookies.set('article'+id_arc, 123, {hoursToLive: 24}); // создаем куку
$("#raiting").unbind();
$('#raiting_hover').hide();
$('#raiting_votes').show();
}
)
});
}
});
</script>

Html

<div id="raiting_star">
<div id="raiting">
<div id="raiting_blank"></div>
<div id="raiting_hover"></div>
<div id="raiting_votes"></div>
</div>
<div id="raiting_info"> <img src="/images/load.gif"><div id="rating_result">Rating: {$mas.rated|round:2}, Votes: {$mas.count_rate}</div>
</div>
ДП
На сайте с 23.11.2009
Offline
203
#3

console.log() или отладчик в зубы и вперёд.

Если нет явных ошибок в формулах - то скорее всего где-то числа плюсуются как строки, т.е. 1+1 = 11.

[Удален]
#4

У js имеются вполне себе числовые типы зачем это порно?


var total_reiting = "4";
var id_arc = "23";
var rating_count = "1";

Дикий пионер, скорее всего прав:


total_reiting = 4
rating_count = 1
user_votes = 1
var w=(total_reiting * rating_count + user_votes) * 27 / (rating_count + 1) ;

67.5

а при


total_reiting = "4"
rating_count = "1"
user_votes = "1"

уже 100.636

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