Javascript sessionstorage:意外的值更改

时间:2015-07-06 19:06:43

标签: javascript html5 cookies web session-storage

我为我的网站制作了一个“字体大小的小部件”。现在我想要实现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");
    });

}

1 个答案:

答案 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