每个Jquery - 索引值总是从0开始吗?

时间:2010-10-13 21:14:33

标签: jquery asp.net-mvc json

我有一个虚假的问题,似乎表明从jquery获得的索引值,每个方法并不总是从0开始。

我的javascript看起来有点像这样:

$("#mylist").each(function(index) {
    var obj = new myclass();
    obj.property = "whatever";
    obj.sequence = index + 1;
    parentobj.list.push(obj);
});

这一切都被打包成json和ajaxed(请原谅动词使用)回到服务器。然后,服务器将json反序列化为.net对象。就在这时我得到一个错误:

The value '91111' cannot be parsed as the type 'Int16'. 

这是在尝试将序列值推入短字段时。

我无法重新创建此项(总是会发生在其他用户身上)。我可能能够在安静的时间段内将一些调试代码添加到相关的javascript文件中,但不能保证它会发生。

这些价​​值似乎也有一种奇怪的模式。日志中的值为: 61111,81111,91111,111111,21111,311111。这些既不上升也不下降,有时重复。

任何人都可以对此有所了解或确认我不相信指数从零开始吗?

由于

1 个答案:

答案 0 :(得分:2)

引自.each()的jquery API:

  

每次回调运行时,都是   通过了当前的循环迭代,   从0开始

因此,我假设它总是被索引为0.我有一个奇怪的问题,jQuery将int + 1的操作视为字符串连接(这可以解释数字后面跟着你的错误中的跟踪) 。例如,请查看以下代码:

var a = 1;
var b = a + 1;

使用与此类似的代码,我会得到11.解决方案是将a包装在parseInt()中,如下所示:

var a = 1;
var b =  parseInt(a) + 1;

尝试将代码修改为以下内容,看看会发生什么:

$("#mylist").each(function(index) {
    var obj = new myclass();
    obj.property = "whatever";
    obj.sequence = parseInt(index) + 1;
    parentobj.list.push(obj);
});