cab*_*ret 5 javascript jquery object
我遇到了一个我正在尝试修改的对象的问题.该对象在格式中具有一定数量的键key_yyyy-mm-dd.当某些输入字段失去焦点时,我会触发一个修改对象的函数.这个功能如下:
function updateHotelBooking()
{
$(".no_hotel").each(function(i) {
var day = $(this).attr('name').match(/\[(.*?)\]/)[1];
hotelBooking["key_" + day] = parseInt($(this).val());
});
}
Run Code Online (Sandbox Code Playgroud)
.no_hotel 是触发函数的文本框,它们还提供了我想要放在对象中的值.
现在,假设我放入3第一个文本框,console.log将返回以下对象:
Object
key_2011-08-21: 3
key_2011-08-22: 0
key_2011-08-23: 0
key_2011-08-24: 0
key_2011-08-25: 0
Run Code Online (Sandbox Code Playgroud)
但是,下次我在文本框中放入一些东西(或者应该触发该函数的另一个文本框)时,它会触发,但是返回的对象保持不变.因此,不是将第一个数字改为5,而是再次返回3.
我不知道为什么.我的代码看起来非常简单,和console.log中day和$(this).val()返回正确的价值观.这只是我的对象,没有得到更新.
有谁有想法吗?非常感谢!
编辑:
hotelBooking在之后初始化$(document).ready():
var hotelBooking = {};
调用updateHotelBooking的方法如下:
$(".roomrequest").blur(function()
{
updateHotelBooking();
});
Run Code Online (Sandbox Code Playgroud)
EDIT2:JSFiddle:http://jsfiddle.net/pBYeD/2/
它与控制台而不是您的代码有关,如果您将日志记录代码更改为此,您将看到您拥有正确的值:
function updateHotelBooking()
{
$(".no_hotel").each(function(i) {
var day = $(this).attr('name').match(/\[(.*?)\]/)[1];
hotelBooking["key_" + day] = parseInt($(this).val());
**logObject(hotelBooking);**
});
}
function logObject(hotelBooking){
for(var i in hotelBooking){
console.log(i+": "+hotelBooking[i]);
}
console.log("------");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |