gpt4 book ai didi

Javascript 在 Firefox 中工作正常,但在 Chrome 中给出 NaN

转载 作者:行者123 更新时间:2023-11-29 15:47:37 25 4
gpt4 key购买 nike

我正在努力帮助我的一个 friend ,她必须对人们进行有关弹出窗口的测试(她研究的是通信科学)。所以基本上我们有 2 个网站,每个网站都有不同的弹出窗口。她问我是否可以创建每分钟显示一个弹出窗口的东西。但是 session 记录必须在几页上显示(例如,它从索引开始,但是当我浏览网站并且分钟结束时,无论打开网站的哪个页面,都必须显示弹出窗口)。

我的 javascript 有点生疏,因为我接触这件事已经是 3 年前的事了。因此,对于这个问题,我使用了一些旧的 javascript 作业,我想我会使用 cookie 来解决这个问题。我在使用全局变量时遇到了一些问题。我希望该网站可以在 firefox/chrome/IE 上运行,因为她必须在大学计算机上对其进行测试,而且我知道他们在那里使用的是哪种浏览器。

所以基本上 console.log("timeRemaining") 将在 firefox(使用 firebug)中显示正确的数字倒计时,但在 chrome 记录器(使用 inspect 元素)中它将显示 NaN。因此 div 将不会显示(由于弹出窗口拦截器,我不使用新窗口)。

问题出在哪里?我已经确定使用 parseInt 解析从 cookie 返回的值。我什至不明白为什么这个简单的代码会在 Chrome 和 Firefox 中返回不同的结果。

function setCookie(name, value) {
var str = name + "=" +escape(value);
str += "; expires= Tue, 28 Dec 2013 00:00:00";
document.cookie = str;
}

function getCookie(name) {
var allCookies = document.cookie.split("; "); // spatie!
for(i in allCookies) {
var singleCookie = allCookies[i].split("=");
if(singleCookie[0] == name) {
return unescape(singleCookie[1]);
}
}
return undefined;
}

function showLayer(layerId){
console.log("showlayer");
}

function checkTime() {
timeRemaining = timeRemaining - 1;
console.log(timeRemaining);
if(timeRemaining == 0) {
showLayer("popup");
timeRemaining = stdTijd;
}
setCookie("tijd", timeRemaining);
}

function loaders() {
timeRemaining = parseInt(getCookie("tijd"));
if(timeRemaining == undefined) {
console.log("new cookie created");
setCookie("tijd", stdTijd);
timeRemaining = parseInt(getCookie("tijd"));
}
console.log("cookie set, timeremaining=" + timeRemaining);
setInterval(checkTime, 1000);
}

var timeRemaining;
var stdTijd = 10;
if (document.getElementById) window.onload = loaders;

NaN 在 console.log(timeRemaining) 上给出;在函数 checkTime 中。

Firefox 打印:

  loaded, display = none
cookie set, timeremaining=10
9
8
7
..

Chrome 打印:

  loaded, display = none
cookie set, timeremaining=NaN
NaN
NaN
..

提前致谢。

编辑:删除我的 cookie 后,我在 firefox 中也得到了一个 NaN。所以问题不仅仅是 firefox 和 chrome 之间的区别,而是我的代码中的一个基本错误。

编辑2:

最佳答案

取回 cookie 时出现问题,这是一个正在工作的 fiddle :jsFiddle

在你正在做的加载器中:

timeRemaining = parseInt(getCookie("timeRemaining"));

应该是:

timeRemaining = parseInt(getCookie("tijd"));

检查从 cookie 返回的数据也需要检查是否为 NaN,因为 get cookie 将返回 undefined 而 parseInt 将返回 NaN:

if(timeRemaining==NaN)

关于Javascript 在 Firefox 中工作正常,但在 Chrome 中给出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com