私はポップアップについての人々のテストをしなければならない友人を助けようとしています(コミュニケーション科学を学ぶ)。だから基本的に私たちは2つのウェブサイトをそれぞれ別のポップアップがあります。彼女は毎分ポップアップを表示するものを作成できるかどうか私に尋ねました。しかし、分はいくつかのページ(例えば、インデックスから始まるが、ウェブサイトの周りをブラウズして、ポップアップが表示されていなければ、ウェブサイトのどのページが開いていても問題ありません)を処理する必要があります。JavascriptはFirefoxでも正しく動作しますが、ChromeにはNaNが付いています
私は問題と接触してから3年前になっているので、私のjavascriptは少し錆びています。だから、問題のために私は古いjavascript課題のいくつかを使用して、私はクッキーを使って問題を解決すると思った。それは私がいくつかの問題に対して実行したグローバル変数の使用にあります。彼女は大学のコンピュータでそれをテストしなければならないので、ウェブサイトをfirefox/chrome/IEで動作させたいと思っています。
したがって、console.log( "timeRemaining")はfirefoxの正しいカウントダウンを(firebugを使用して)表示しますが、chrome logger(inspect要素を使用)ではNaNを表示します。したがって、divは表示されません(私はポップアップブロッカーのために新しいウィンドウを使用しません)。
どこが問題なのですか?私はすでに、cookieから返された値がparseIntを使って解析されていることを確認しました。私はなぜこの単純なコードがFirefoxよりもChromeで異なる結果を返すのか理解できません。
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
..
クロームプリント:事前に
loaded, display = none
cookie set, timeremaining=NaN
NaN
NaN
..
感謝。
EDIT:私のクッキーを削除した後、私はFirefoxでもNaNを取得します。ですから、問題はFirefoxとChromeの違いだけでなく、コード内の基本的なエラーです。
EDIT2:
まあ持っています'timeRemaining 'クッキーにある値、' parseInt() 'に渡された値がどこにあるのか確認しましたか? – Pointy
私はchromeとfirefoxにNaNの両方を持っており、firefoxのクッキーをクリアしてもう一度やり直します。 – xdazz
ありがとうxdazz。今私はFirefoxでもNaNになります。だから問題は私のコードにあります。 – Najdo