Я работаю над игрой. Я исправил проблему с числами, но теперь у меня есть новая проблема.Localstorage перестает работать, если значение высокое.
Если пользователь прошел определенное число, он перестает добавлять его к локальному хранилищу. См. http://beefinc.tk и измените значение localstorage на 9000000000000000000, и оно перестанет позволять вам значение +1. Если вы поедете на этот номер и нажмите красную кнопку с коровой, скажите NaN
, где ваши деньги. Итак, мне было интересно, как это исправить. Ниже мой код.
var money = null;
if (localStorage.getItem('money')) {
var money = nFormatter(localStorage.getItem('money'), 1);
$$("#moneyCount").html(money);
} else {
var money = localStorage.setItem('money', '0');
$$("#moneyCount").html(money);
}
$$(".beefButton").on('click', function() {
var money = localStorage.getItem('money');
money++;
localStorage.setItem('money', money);
$$("#moneyCount").html(nFormatter(localStorage.getItem('money'), 1));
setColor('Checking For Achievements', "#ed7032", "font-weight: bold; font-size: 20px;");
var money = localStorage.getItem('money');
if(money === '100') {
setColor('Found 100', "#ed7032", "font-weight: bold; font-size: 20px;");
setColor('Displaying Entrepreneur Achievement!', "#ed7032", "font-weight: bold; font-size: 20px;");
beefinc.addNotification({
message: 'Become an Entrepreneur'
});
}
if(money === '1000') {
setColor('Found 1000', "#ed7032", "font-weight: bold; font-size: 20px;");
setColor('Displaying Business Man Achievement!', "#ed7032", "font-weight: bold; font-size: 20px;");
beefinc.addNotification({
message: 'Become an Business Man'
});
}
if(money === '1000000') {
setColor('Found 1000000', "#ed7032", "font-weight: bold; font-size: 20px;");
setColor('Displaying Millionaire Achievement!', "#ed7032", "font-weight: bold; font-size: 20px;");
beefinc.addNotification({
message: 'Become an Millionaire'
});
}
start = clicks = frequency = 0
if (!start) {
start = new Date;
frequency = ++clicks/(new Date - start) * 1000;
}
});
function nFormatter(num, digits) {
var si = [
{ value: 1E33, symbol: "D"},
{ value: 1E30, symbol: "N"},
{ value: 1E27, symbol: "O"},
{ value: 1E24, symbol: "Y"},
{ value: 1E21, symbol: "Z" },
{ value: 1E18, symbol: "E" },
{ value: 1E15, symbol: "P" },
{ value: 1E12, symbol: "T" },
{ value: 1E9, symbol: "B" },
{ value: 1E6, symbol: "M" },
{ value: 1E3, symbol: "K" }
], rx = /\.0+$|(\.[0-9]*[1-9])0+$/, i;
for (i = 0; i < si.length; i++) {
if (num >= si[i].value) {
return (num/si[i].value).toFixed(digits).replace(rx, "$1") + si[i].symbol;
}
}
return num.toFixed(digits).replace(rx, "$1");
}
Так что я знаю, я использую $$ вместо $, но это потому, что я использую базу под названием Framework7, которая имеет свое на встроенную в версии JQuery, но это работает точно так же, как он.
9000000000000000001 больше, чем [максимальное безопасное целочисленное значение] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) Поддержка JavaScript (что составляет 9007199254740991). – robertklep