我有一个虚假的问题,似乎表明从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。这些既不上升也不下降,有时重复。
任何人都可以对此有所了解或确认我不相信指数从零开始吗?
由于
答案 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);
});