Javascript Integer被解释为字符串?

时间:2016-05-20 14:07:06

标签: javascript string integer

var air = ITC.ITC.hotel.options.option[itc].packages.package[i].airfare - 1;
var opt = ITC.ITC.hotel.options.option[itc].packages.package[i].option - 1;  

console.log((air+1)); // Display 1 in console
console.log((opt+1)); // Display 7 inconsole
detailHtml += '<button class="btn btn-primary btn-lg nav-book" type="button" onclick="book_package(\''+ITC.sid+'\' , '+ITC.ITC.hotel.orig_hot_num_xsl+' , \''+(itc+1)+'\' , '+(package_idx+1)+' , '+(air+1)+' , '+(opt+1)+');">'+lang['book']+'</button>';

当我检查元素时,函数book_package的最后两个参数是01和61的整数但是当我在控制台中执行air + 1和opt + 1时我得到1和7 ...

<button class="btn btn-primary btn-lg nav-book" type="button" onclick="book_package('3dd57f6c9e133553378e11d7521ab1be1463751663', 1, '1,3', 7, 01, 61);">Book Now</button>

编辑2

我也试过

var air = parseInt(ITC.ITC.hotel.options.option[itc].packages.package[i].airfare) - 1;
var opt = parseInt(ITC.ITC.hotel.options.option[itc].packages.package[i].option) - 1; 

'+(parseInt(air+1))+' , '+(parseInt(opt+1))+'

我清除了浏览器缓存,只是因为,我仍然遇到同样的问题

编辑3

新尝试,仍然是同样的问题...

'+(1 + parseInt(air , 10))+' , '+(1 + parseInt(opt , 10))+'

3 个答案:

答案 0 :(得分:2)

detailHtml += '<button...,你开始使用一个字符串...这使得JS将所有内容解释为字符串连接,而在代码的其他部分,你没有任何字符串可以搞砸了!

解决方案:

  detailHtml +=     '<button class="btn btn-primary btn-lg nav-book" type="button" onclick="book_package(\''+ITC.sid+'\' , '+ITC.ITC.hotel.orig_hot_num_xsl+' , \''+parseInt(itc+1)+'\' , '+parseInt(package_idx+1)+' , '+parseInt(air+1)+' , '+parseInt(opt+1)+');">'+lang['book']+'</button>';

var a = 1, b = 6;

var r = 'Result';

r += ': ' + parseInt(a+1) + ', ' + parseInt(b+1);

document.body.innerHTML = r;

答案 1 :(得分:0)

确保它们是integer

,确保安全
air = parseInt(air);
opt = parseInt(opt);

答案 2 :(得分:0)

仔细检查数据类型是否有空,然后选择。

检查一下,看看第一个警报如何将空气作为数字,第二个警告将其作为字符串:plnkr.co/edit/4Ll6juBC3BEu1MgdUhjx?p=preview