2016-11-17 6 views
0

初めてクッキーで遊んでいて、その一部を保存しています。私が保存しているデータは数字であり、これらのヌーヴァーの最も重要な部分は、これらを追加したり減算したりできることです。しかし、私が保存したパラメタの1つに数値を追加しようとすると、テキストのように追加されます。Javascript数字が文字列であるかのように追加する

例: 私はvalueと呼ばれるクッキーを持っている、と私は、この値が欲しいとき、私はこのようになります私はJeffery Toで見つかったスクリプトを使用します。

function readCookie(name) { 
    return (name = new RegExp('(?:^|;\\s*)' + ('' + name).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + '=([^;]*)').exec(document.cookie)) && name[1]; 
} 

私が欲しいこのクッキーを収集した後それに1を加える。値が9の場合は、value + 1 = 10のようになります。簡単な数学。しかし、それは私にこれを与える91。それはなぜこれをするのですか?数字は文字列だと思うからですが、どうすれば数字のように振る舞うことができますか?私は私が私のvalueparseInt()内を置くために必要なことを学びましたコメントを読んだ後

ソリューション 。だから私は、単純に言って目的球を修正:

function readCookie(name) { 
     return parseInt((name = new RegExp('(?:^|;\\s*)' + ('' + name).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + '=([^;]*)').exec(document.cookie)) && name[1]); 
    } 
+0

はhttps://developer.mozilla.org ' –

+0

は(あなたが[のparseInt]を使用してについて考えている[値]または'のparseInt(値)+ '試してみてください/ ja-ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt)? – larz

+0

実際に何かを追加するコードの部分を投稿してください。 –

答えて

1

JavaScriptで+オペレータは、数学的な追加または文字列連結を意味することができます。取得するのは、オペランドの暗黙の型に基づいています。一方のオペランドが文字列の場合、他方の文字列は文字列に変換され、連結されます。

まず、数字の数学を行います(括弧で数式部分を囲むか、別の文で数式を行うことができます)。次に、結果を文字列に挿入します。

数に数文字を含む文字列を強制するには、あなたがparseInt()parseFloat()を使用することができますが:parseInt()で、あなたは操作のための基数を指定するオプションの第二引数を供給する必要があること

var result = parseInt(value, 10) + 1; 

注意。最初の引数が16進値を含む文字列を参照する場合、結果は16進数ではなく16進数に基づいています。そのため、私の例では10が使用されます。

parseInt()parseFloat()の両方が、数字として扱うことができない最初の無効な文字を見つけた後に停止することにも注意してください。だから、このような文字列で:"Scott7Marcy9"、あなたはNaNを得るでしょう。

0

Cookieは、推測したとおりに文字列値として保存されます。あなたが望む効果を得るには、あなたの価値を解析する必要があります。あなたはそれが整数になります絶対に確信している場合は、使用:

parseInt(value) + 1 
関連する問題