jQuery:为什么整数被添加到像字符串这样的变量?

Ben*_*son 1 javascript string variables jquery integer

所以我试图获取在for语句中递增的变量,并向其添加一个整数...但由于某种原因,它正在添加整数,就像它是一个字符串一样; 减法或乘法等其他操作按预期工作.

为什么会这样?编辑:我添加了整个功能; 问题是我尝试将2添加到变量x的位置.

令我困惑的是,我能够在.eq()对象中使用x没问题,例如......

$(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);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Tra*_*ebb 5

为什么会这样?

因为x是一个看起来像数字的字符串.转为Number第一个,你会得到你期望的结果:

"1" + 2 = "12"
Number("1") + 2 = 3
Run Code Online (Sandbox Code Playgroud)

编辑:现在,我看到你正在使用split将字符串转换为数组,你的问题肯定是你连接字符串.转为Number第一,你的问题解决了.

是的其他算术运算将起作用,因为它们将隐式地将操作数转换为Numbers.令人困惑的是,"2" * 3实际上会评估整数6.欢迎使用Javascript.

-tjw

  • @Sime真的,谢谢你指出了这一点.我使用完整的单词,因为我喜欢它,当其他人可以实际阅读和理解我的Javascript而不想知道它是否实际上是用Perl编写的. (2认同)