Javascript jQuery对象除了第一次外从不更改
我在试图修改的对象上遇到了问题。该对象具有一定数量的键,其格式为Javascript jQuery对象除了第一次外从不更改,javascript,jquery,object,Javascript,Jquery,Object,我在试图修改的对象上遇到了问题。该对象具有一定数量的键,其格式为key\u yyyy-mm-dd。当某些输入字段失去焦点时,我触发一个函数来修改对象。此功能如下所示: function updateHotelBooking() { $(".no_hotel").each(function(i) { var day = $(this).attr('name').match(/\[(.*?)\]/)[1]; hotelBooki
key\u yyyy-mm-dd
。当某些输入字段失去焦点时,我触发一个函数来修改对象。此功能如下所示:
function updateHotelBooking()
{
$(".no_hotel").each(function(i) {
var day = $(this).attr('name').match(/\[(.*?)\]/)[1];
hotelBooking["key_" + day] = parseInt($(this).val());
});
}
.no_hotel
是触发函数的文本框,它们还提供了一个我想放入对象中的值
现在,假设我在第一个文本框中放入3
,一个控制台.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
但是,下次我在textbox(或者应该触发函数的另一个textbox)中放入某个内容时,它确实会触发,但是返回的对象保持不变。因此,与其将第一个数字改为,比如说,5,它只会再次返回3
我不知道为什么。我的代码看起来非常简单,一个日和$(this.val()
的控制台.log
返回正确的值。只是我的对象没有更新
有人知道吗?非常感谢
编辑:
hotelBooking
在$(文档)之后立即初始化。ready()
:
var hotelBooking={}代码>
调用updateHotelBooking的方法如下所示:
$(".roomrequest").blur(function()
{
updateHotelBooking();
});
EDIT2:JSFiddle:您确定问题不是来自调试器输出吗
就我在chrome输出中所见,如果我让小提琴保持原样,对象在控制台中似乎不会改变(只是左边的数字取a+3)。但是,如果我添加了类似于console.log(hotelBooking[“key_”+day])的内容代码>之前或之后,它显示为更改。它与控制台有关,而不是与您的代码有关,如果您将日志代码更改为此,您将看到您具有正确的值:
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("------");
}
触发updateHotelBooking的函数看起来如何?hotelBooking变量在哪里/如何初始化?如何设置hotelBooking?另外,您如何调用您的对象?您可以发布您的完整代码吗?日期和您的酒店预订对象声明在哪里?请查看.delegate()。这个功能可能会解决你的问题。我也认为是这样的。可能是这样的。是的,它在Firefox中似乎工作得很好。。我想应该早点测试一下。我将在FF发展一段时间。谢谢我认为FF总是比较适合开发,firebug(imho)是一种比其他调试器更好的调试器。谢谢,我将在开发这部分时使用该函数一段时间。LOL-这就是问题所在??我猜想@cabaret使用的是chrome——它的控制台有一些奇怪的显示对象的方式。Firefox+Firebug中并非如此