0

インターネットに追加されたVs連結の質問がたくさんありますが、私はなぜ私が振る舞っているのか分かりません。私は明らかな文字列を "追加"しようとしていないと私はparseIntparseFloatすべての値を無駄にしようとしました。私は数値表現を含むdata-page属性から値を取得する必要があります(私はおそらく暗黙的な文字列として認識しています)。 data-page属性から値を取得している限り、変数に追加を実行できません。私がハードコード1で置き換えると、すべて正常に動作します。値は常に整数でなければなりませんが、私は同じ動作をしたかどうかを確認するためにparseFloatを試しました。私はそれをしました。珍しいJavaScriptの追加と連結の振る舞い

いくつかのサンプルコードは以下のとおりです。 $("#pagination").attr('data-page').trim()1と評価されます。

//Tried parseFloat 
//datapage = 1 //This works as expected 
dataPage = parseFloat($("#pagination").attr('data-page').trim()); //This does not work as expected 
curPage = (parseFloat(dataPage) + parseFloat(1)); 
console.log(curPage); //Outputs '11' instead of '2' 

//Tried parseInt 
//datapage = 1 //This works as expected 
dataPage = parseInt($("#pagination").attr('data-page').trim()); 
curPage = (parseInt(dataPage) + parseInt(1)); 
console.log(curPage); //Outputs '11' instead of '2' 
+1

HTMLも投稿できますか?どちらの例も私にとってうまくいきます。 –

+0

私は '** parseFloat'と' parseInt'を使わないコード**は動作しないと思います。とにかく、なぜ 'parseFloat'と' parseInt'を2回呼び出すのでしょうか? –

+0

@MarioAlexandroSantini冗長性のためにparseFloat/parseIntを2回呼び出して、私が得ていると思っていることを確実にします。私は通常、プロダクションコードでそれをしません。 –

答えて

2

すべてが期待どおりに機能しています。このcodepenを参照してください。http://codepen.io/anon/pen/zBwOPW

HTML:

<body> 
    <input id="pagination" data-page="1" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 
</body> 

あなたのオリジナルのJS変わら:

コメントのいくつかの後
//Tried parseFloat 
//datapage = 1 //This works as expected 
dataPage = parseFloat($("#pagination").attr('data-page').trim()); //This does not work as expected 
curPage = (parseFloat(dataPage) + parseFloat(1)); 
console.log(curPage); //Outputs '11' instead of '2' 

//Tried parseInt 
//datapage = 1 //This works as expected 
dataPage = parseInt($("#pagination").attr('data-page').trim()); 
curPage = (parseInt(dataPage) + parseInt(1)); 
console.log(curPage); //Outputs '11' instead of '2' 
+0

「社内」のWebスニペット機能を使用するには、これを修正することをお勧めします。 – JonSG

0

と保証JavaScriptは、私は私の間の他の違いを探し始め正しかったです既存のコードとサンプルスニペットが掲載されています。この問題は、私が使用しているテンプレートエンジンであるSmartyと関係があります。 data-page属性にはSmarty変数が設定されていますが、ハードコードされた値でその値を変更したとき、追加は期待通りに機能しました。

何をして動作しません:

<div id="pagination" class="col-xs-12 col-md-5 paginationBar" data-page="{$paginationPage}" data-pageMax="{$paginationPageMax}" data-pageQty="{$paginationQty}">...<div> 

何作品:私はなぜ、これはまだ問題を装っているかわからない

<div id="pagination" class="col-xs-12 col-md-5 paginationBar" data-page="1" data-pageMax="1000" data-pageQty="10">...<div> 

。しかし、これが間違いなくそれを引き起こしているのです。理由や解決方法を見つけたら、この回答を更新してください。

+0

'10000-(9999-(dataPage))'のような何かを試してみたらどうなりますか?数学的には、これは 'dataPage + 1'とまったく同じになるはずですが、プラス記号は使用しません。 –

関連する問題