为什么我的准备功能未到达?

时间:2015-07-13 19:51:48

标签: javascript jquery cookies ready

我正在尝试将Cookie的值重置为" 1"每次都在准备好的功能中,但似乎我的准备功能根本没有达到。

首先,我获得了以下代码,无需使用插件here即可获取和设置Cookie。

function setCookie(key, value) {
    var expires = new Date();
    expires.setTime(expires.getTime() + 31536000000); //1 year  
    document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
}

function getCookie(key) {
    var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
    return keyValue ? keyValue[2] : null;
}  

以下是我尝试将Cookie设置为" 1"在就绪功能中:

$(document).ready(function () {
        var rowcount = new Number(1);
        setCookie('dynamictablerows', rowcount);
        alert('ready function reached');
    });

然后,在加载函数中,我有一个临时的"调试"警告以显示cookie中的当前值:

/* NOTE: Things that need to take place after all the elements have been constructed need to go here; the ready function can be too early */
$(window).load(function () {
    . . . non-pertinent-to-this-question code elided
    alert('load function reached ' + getCookie('dynamictablerows'));   
});

当用户选择"添加一行"时,我会更新cookie的值。按钮:

/* This makes the next hidden row visible, as long as there is one */
$(document).on("click", '[id$=btnAddFoapalRow]', function (e) {
    $('[id$=foapalhtmltable]').find('tr:hidden:first').show();
    var currentvisiblerows = new Number(getCookie('dynamictablerows'));
    currentvisiblerows = currentvisiblerows + 1;
    setCookie('dynamictablerows', currentvisiblerows);
});

所以,我应该看到" 1"第一个警报,然后" 3"添加两行并选择" Save"按钮(刷新并再次调用就绪和加载功能)。

但是,我看到的是,没有达到准备好的功能'警惕;然后,通过单击" btnAddFoapalRow"添加两行后按钮,然后提交页面,警报始终只显示前一个值加上另外2;例如(没有双关语),如果它开始告诉我"加载功能达到13",则表示"加载功能达到15"。

因此cookie正在递增,但永远不会重置为1,因为没有达到就绪功能。不应该在加载函数之前调用就绪函数吗?

我希望ready函数只会在每次站点访问时触发一次,因此我可以[重新]将cookie值设置为1,然后每次提交表单时都会运行load()函数(N每次站点访问的次数),从而知道需要多少行才能添加回表。 IOW,表总是从两行开始;用户可以通过btnAddFoapalRow添加第三行和第四行。出现问题的原因是每个表单提交都会删除动态添加的行,因此我希望在表单提交后以编程方式将它们添加回来,并且通过查询cookie val(理论上)知道要添加多少行的方式。< / p>

那么我在这里做错了什么或误解了什么?

更新

现在由于某种原因,到达就绪函数 (我看到警报),虽然我没有对jQuery做任何更改。也许它会受到月相的影响,或者受到某些内部气味的盐的影响。

0 个答案:

没有答案