如何在第一次点击时获得正确的百分比?

时间:2016-01-28 20:01:14

标签: javascript jquery html css

小提琴:https://jsfiddle.net/252jxsjq/1/

首次点击按钮时,它显示错误的数字。如果您继续单击同一按钮,则会继续显示错误的数字。但是,如果你点击另一个按钮,它会显示正确的百分比。问题是什么?

jQuery的:

var counter = localStorage.getItem('rans') || 0;

$('.redanswer').click(function(){
     localStorage.setItem('rans', ++counter);
     $( '.bpercent' ).html( counter1 * 100 / (counter1+counter) + "%" );
     $( '.rpercent' ).html( counter * 100 / (counter1+counter) + "%" );

 });

var counter1 = localStorage.getItem('bans') || 0;

$('.blueanswer').click(function(){
     localStorage.setItem('bans', ++counter1);
     $( '.rpercent' ).text( counter * 100 / (counter1+counter) + "%" );
     $( '.bpercent' ).text( counter1 * 100 / (counter1+counter) + "%" );
});

2 个答案:

答案 0 :(得分:4)

localStorage.getItem('rans')返回一个字符串,因此您实际需要将其强制转换为数字:

var counter = Number(localStorage.getItem('rans')) || 0;
var counter1 = Number(localStorage.getItem('bans')) || 0;

答案 1 :(得分:1)

您必须确保在执行counter1+counter时,您正在添加整数而不是连接字符串。 parseInt()会对此有所帮助。

此外,正如其他人所提到的那样,Math.floor()Math.round()可以为此提供帮助。

这样的事情会起作用:

counter = localStorage.getItem('rans') || 0;



$('.redanswer').click(function(){
     localStorage.setItem('rans', ++counter);
     sum = (parseInt(counter1) + parseInt(counter));
     $( '.bpercent' ).html( Math.floor(counter1 * 100 / sum) + "%" );
     $( '.rpercent' ).html( Math.floor(counter * 100 / sum) + "%" );

});

counter1 = localStorage.getItem('bans') || 0;

$('.blueanswer').click(function(){
     localStorage.setItem('bans', ++counter1);
     sum = (parseInt(counter1) + parseInt(counter));
     $( '.rpercent' ).text( Math.floor(counter * 100 / sum) + "%" );
     $( '.bpercent' ).text( Math.floor(counter1 * 100 / sum) + "%" );
});

你可以在这个JS小提琴中看到它:https://jsfiddle.net/igor_9000/252jxsjq/4/

对于跨不同计算机的永久存储,请查看一些服务器端语言并为不同用户存储信息。

希望有所帮助!