小提琴: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) + "%" );
});
答案 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/
对于跨不同计算机的永久存储,请查看一些服务器端语言并为不同用户存储信息。
希望有所帮助!