Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery对象除了第一次外从不更改_Javascript_Jquery_Object - Fatal编程技术网

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中并非如此