不寻常的JavaScript添加与连接行为

不寻常的JavaScript添加与连接行为,javascript,concatenation,addition,arithmetic-expressions,integer-arithmetic,Javascript,Concatenation,Addition,Arithmetic Expressions,Integer Arithmetic,互联网上有很多关于加法和串联的问题,但我不知道为什么我会有这样的行为。我并没有试图“添加”明显的字符串,我对所有值都尝试了parseInt和parseFloat,但都没有效果。我需要从数据页属性中获取值,该属性将包含一个数值表示(我认识到可能是一个隐式字符串)。我注意到,只要我从数据页属性中获取一个值,我就不能对变量执行加法。如果我将其替换为硬编码的1,则一切正常。值应该始终是整数,但我尝试了parseFloat以查看是否得到了相同的行为。我做到了 下面是一些示例代码。假设$(“#分页”).at

互联网上有很多关于加法和串联的问题,但我不知道为什么我会有这样的行为。我并没有试图“添加”明显的字符串,我对所有值都尝试了
parseInt
parseFloat
,但都没有效果。我需要从
数据页
属性中获取值,该属性将包含一个数值表示(我认识到可能是一个隐式字符串)。我注意到,只要我从
数据页
属性中获取一个值,我就不能对变量执行加法。如果我将其替换为硬编码的
1
,则一切正常。值应该始终是整数,但我尝试了
parseFloat
以查看是否得到了相同的行为。我做到了

下面是一些示例代码。假设
$(“#分页”).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'

一切正常。请参阅此代码笔:

HTML:


一切正常。请参阅此代码笔:

HTML:


在一些注释和保证JavaScript是正确的之后,我开始研究我的现有代码和发布的示例代码片段之间的其他差异。事实证明,这个问题与我使用的模板引擎Smarty有关。
数据页
属性中填充了一个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>
。。。

我不知道为什么这会引起一个问题。但这绝对是导致它的原因。如果我弄明白为什么和/或如何更正它,我一定会更新这个答案。

在一些评论和保证JavaScript是正确的之后,我开始研究我现有代码和发布的示例代码片段之间的其他差异。事实证明,这个问题与我使用的模板引擎Smarty有关。
数据页
属性中填充了一个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>
。。。

我不知道为什么这会引起一个问题。但这绝对是导致它的原因。如果我弄清楚原因和/或如何更正,我一定会更新这个答案。

你也可以发布HTML吗?你的两个例子对我来说都很好。我认为没有
parseFloat
parseInt
的代码不起作用。无论如何,这应该是可行的,为什么要调用
parseFloat
parseInt
两次?@MarioAlexandroSantini我调用parseFloat/parseInt两次,以确保得到我认为得到的东西。我通常不会在生产代码中这样做。你也可以发布HTML吗?你的两个例子对我来说都很好。我认为没有
parseFloat
parseInt
的代码不起作用。无论如何,这应该是可行的,为什么要调用
parseFloat
parseInt
两次?@MarioAlexandroSantini我调用parseFloat/parseInt两次,以确保得到我认为得到的东西。我通常不会在生产代码中这样做。您可能希望修改此设置以使用“内部”web代码段工具。您可能希望修改此设置以使用“内部”web代码段工具。如果尝试像
10000-(9999-(dataPage))
这样疯狂的操作,会发生什么?从数学上讲,这应该与
dataPage+1
完全相同,但它不使用任何加号。如果您尝试像
10000-(9999-(dataPage))
这样疯狂的东西,会发生什么?从数学上讲,这应该与
dataPage+1
完全相同,但它不使用任何加号。