我正在尝试将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做任何更改。也许它会受到月相的影响,或者受到某些内部气味的盐的影响。