为什么一个整数会像字符串一样被添加到变量中?
jQuery: why is an integer being added to a variable like a string?
所以我试图采取在for语句中增加的变量,并向其添加一个整数…但出于某种原因,它把整型当成字符串来加;其他运算,如减法或乘法,按预期工作。
为什么会发生这种情况?编辑:我已经添加了整个功能;问题是我试图在变量x上加2。
让我困惑的是,我能够使用x没有问题,在一个。eq()对象,例如…
$(function() {
$('textarea').bind('paste', function (e){
inputGroup = $(this).parent();
var ob = $(this);
if (e.type == 'paste'){
setTimeout(function(){
var data = ob.val();
var tabbed = data.replace(/'n/g, "'t");
var cells = tabbed.split("'t");
for(var x in cells) {
foo = x + 2;
alert(foo);
$(inputGroup).find('input').eq(x).val(cells[x]);
}
}, 1);
}
});
});
为什么会发生这种情况?
因为x
是一个看起来像数字的字符串。首先转换为Number
,您将得到您期望的结果:
"1" + 2 = "12"
Number("1") + 2 = 3
EDIT:现在我看到您正在使用split
将字符串转换为数组,您的问题是绝对,您正在连接字符串。先转换到Number
,你的问题就解决了。
是的,其他算术运算也可以,因为它们将隐式地将操作数转换为数字。令人困惑的是,"2" * 3
实际上会求值为整数6
。欢迎使用Javascript。
-tjw
如果没有更多的代码,特别是单元格的初始化,我无法告诉您确切的原因。但是您可以简单地在x
上调用parseInt()
将其转换为整数以进行加法
for(var x in cells) {
foo = parseInt(x, 10) + 2;
$(inputGroup).find('input').eq(foo).val(cells[x]);
}
因为+
是一个字符串连接,但*
或/
没有等效的字符串方法,所以当使用它们时,它将值转换为数字。将x
转换为整数:
for(var x in cells) {
foo = parseInt(x, 10) + 2;
$(inputGroup).find('input').eq(foo).val(cells[x]);
}
parseInt
中的10
表示使用十进制的数字系统(例如,与十六进制相反)
正如其他人提到的,x
是字符串。这就是为什么。
在JavaScript中有一个很好的将字符串转换为数字的技巧,虽然没有提到:
for(var x in cells) {
// Without the "var" here, you're setting a global
// variable during each loop iteration.
var foo = +x + 2;
$(inputGroup).find('input').eq(foo).val(cells[x]);
}
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 在SVG地图上添加水的渐变,就像在谷歌地图(PHP/JS)中一样
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- IE DIV悬停区域不一样.直到我添加背景颜色
- 有没有办法在javascript中创建哈希图并像添加和删除值一样对其进行操作
- JavaScript 在添加值时,它会像字符串一样计算
- 在SlickGrid的dataView的第一行添加一个新项目,就像JavaScript的unshift一样
- JavaScript,将我使用过parseInt的两个变量添加到一起,像字符串一样输出
- 添加到WebSocket.onmessage()中,就像jQuery添加到事件中一样
- 我如何添加时间延迟到我的潜水,使他们出现一个接一个像幻灯片一样
- 像添加AngularJS属性一样添加ng-click
- jQuery:是否有一种方法可以自动添加属性到动态生成的HTML中,就像live()处理事件一样
- 为什么一个整数会像字符串一样被添加到变量中?