我为我的网站制作了一个“字体大小的小部件”。现在我想要实现sessionstorage,这样用户就不必一直点击按钮了。
标准字体大小为20.现在,我不知道为什么,但有时候,只有当我按下button2(具有更大的尺寸)时,该值才变为字面上的20 + 2 =>我不知道怎么回事。
有没有人知道如何提高性能并解决此代码?或者,如果您认为cookie是一个更好的主意,我将如何为这段代码实现cookie?
var currentSize;
function confSize(){
if (sessionStorage.getItem('sessionSize') == ""){
$("#body").css("font-size", "20px");
}
else {
currentSize = sessionStorage.getItem('sessionSize');
$("#body").css("font-size", currentSize + "px");
console.log(sessionStorage.getItem('sessionSize'))
}
$("#button2").click(function(){
if (currentSize == 20){
currentSize = 22;
}
else {
currentSize = currentSize + 2;
}
sessionStorage.setItem('sessionSize', currentSize);
$("#body").css("font-size", currentSize + "px");
});
$("#button").click(function(){
currentSize -= 2;
sessionStorage.setItem('sessionSize', currentSize);
$("#body").css("font-size", currentSize + "px");
});
}
答案 0 :(得分:2)
您需要确保正确使用值作为字符串和整数。如果您执行以下操作:
currentSize = currentSize + 2
根据currentSize
当前是字符串还是整数,您将得到不同的值。如果它是一个字符串,则会出现您注意到的连接问题。
现在,您实际上将此问题与将currentSize
整数sessionStorage
值插入.toString()
时的问题相混淆,自动为存储进行整数到字符串转换(从技术上讲,sessionStorage
在您尝试存储的任何内容上调用方法以确定要存储的字符串值。从var currentSize;
function confSize(){
var defaultSize = 20;
var sessionStorageStr = sessionStorage.getItem('sessionSize');
if (sessionStorageStr == ""){
currentSize = defaultSize;
}
else {
currentSize = parseInt(sessionStorageStr);
console.log(currentSize);
}
// no need to repeat this code in both sides of the conditional above
$("#body").css("font-size", currentSize + "px");
$("#button2").click(function(){
// I removed your conditional here, as it really did nothing
currentSize += 2;
sessionStorage.setItem('sessionSize', currentSize);
$("#body").css("font-size", currentSize + "px");
});
$("#button").click(function(){
currentSize -= 2;
sessionStorage.setItem('sessionSize', currentSize);
$("#body").css("font-size", currentSize + "px");
});
}
检索的内容总是一个字符串值,因此在尝试对其进行整数数学运算之前,需要将其强制转换为整数。
我建议修改你的代码以明确字符串/整数。这可能是这样的:
com.google.android.gms:play-services-identity:7.5.0