2017-08-07 60 views
0

主要問題是,當打印cookie值時,它會在其周圍添加引號,但在我的情況下,我需要它打印的是數字而不是字符串。獲取cookie值爲整數

下面是函數:

function getCookie(cname) { 
    var name = cname + '='; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 
    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ''; 
} 

例如,假設,即獲取cookie之前,我給自己定一個cookie像這樣:

function setCookie(cname, value) { 
     document.cookie = cname + '=' + value + ';' + ';path=/'; 
    } 
    setCookie('PirkumsVeikts', 'True'); 

setCookie(testCookie, 123); 

,然後我跑了的getCookie();

getCookie('testCookie') 

它將打印「123」,但我需要它打印它沒有雙引號,這可能嗎?

+0

'VAR測試=號(的getCookie( 'testCookie'));' – fubar

+0

使用Number()函數從字符串轉換爲一個數字,parsInt()也可以工作 – user7951676

回答

0

,你正在返回的Cookie是一個簡單的字符串:

function getCookie(cname) { 
 
    var name = cname + '='; 
 
    var decodedCookie = decodeURIComponent(document.cookie); 
 
    var ca = decodedCookie.split(';'); 
 
    for (var i = 0; i < ca.length; i++) { 
 
    var c = ca[i]; 
 
    while (c.charAt(0) == ' ') { 
 
     c = c.substring(1); 
 
    } 
 
    if (c.indexOf(name) == 0) { 
 
     return c.substring(name.length, c.length); 
 
    } 
 
    } 
 
    return ''; 
 
} 
 

 
function setCookie(cname, value) { 
 
    document.cookie = cname + '=' + value + ';' + ';path=/'; 
 
} 
 

 
setCookie('testCookie', 123); 
 
console.log(getCookie('testCookie'));

如果需要,你可以簡單地轉換成數這個通過將其與Number()鑄造爲一個:

Number(getCookie('testCookie')); 

或解析它作爲一個與parseInt()

parseInt(getCookie('testCookie')); 

希望這有助於! :)

+0

如果使用'parseInt',你也應該指定基本面額。 'parseInt(getCookie('testCookie'),10)' – fubar

+1

是的,我建議指定基數以防止混淆。我個人從來沒有遇到過這種情況,它不是**默認** 10,但顯然這樣的情況可以存在,所以它有助於準確:) –

0

只是轉換的價值迴歸使用parseInt整數:

var number = parseInt(getCookie('testCookie'));