Javascript/CSS, 如何保持变化?
Javascript/CSS, How to keep changes?
基本上,我有这个 header,当人们不再需要它时,它会滑开,当他们需要时,可以再次滑下来。我希望它默认关闭,但我不希望人们必须不断单击 header 切换 every-time 才能加载新页面。我读过有关使用 cookie 的信息,但我在 javascript 方面的技能相当有限。这是我目前使用的运行良好的代码:
<div id="headtoggle" onclick="headertoggle()"></div>
<script>
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
top = "-11px";
pagetop = "275px";
} else {
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
如何更改代码,以便 "remembers" 每个人的最后设置是什么?我愿意也用jquery。对于这个非常新手的编码员的任何帮助将不胜感激。
谢谢,
迪伦
EDIT2:我稍微更改了给我的代码,但遇到了新问题。
<div id="headtoggle" onclick="headertoggle()" onload="topposition()"></div>
<script>
function topposition() {
var top;
var pagetop;
if (localStorage.getItem("headerDown") == "false") {
top = "-11px";
pagetop = "275px";
} else {
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
<script>
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
localStorage.setItem("headerDown", false);
top = "-11px";
pagetop = "275px";
} else {
localStorage.setItem("headerDown", true);
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
开关按预期工作,但是每当我在 firefox 控制台中触发 "function topposition ()" 时,我都会收到以下错误:
SyntaxError: expected expression, got end of script data:,/*
EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE:
*/%0A%09function%20topposition() Line 2
我会说本地存储将是一个不错的选择。只需记录一个事件或变量或其他任何内容,然后在每次加载页面时检查它。
https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage
您可以使用
创建 cookie
document.cookie="headerDown=true";
然后当 header 向上移动时用更改为 false 的相同代码覆盖 cookie。
如果您随后添加一些在页面加载时读取 cookie 的代码,您将能够确定需要什么。
您可以通过访问 document.cookie 来读取 cookie,这将是以下格式的任何可用 cookie 的字符串。
cookie1=value; cookie2=value; cookie3=value;
寻找您的 cookie,您应该能够从那里设置 header 是向上还是向下。
使用本地存储将允许您在页面加载之间保存变量。
将 localStorage.setItem(name,value) 添加到您的 if 语句中,如下所示。
如果您只使用 headerToggle 函数来定位这些元素,那么函数下面的 if 语句就足够了。即使您希望 header 关闭,也需要两次调用 header 切换函数。
您需要确保将 if 语句放在 div 的 html 之后,最有可能的最佳位置是页面的最底部。
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
localStorage.setItem("headerDown", true);
top = "-11px";
pagetop = "275px";
} else {
localStorage.setItem("headerDown", false);
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
if (localStorage.getItem("headerDown") == "true") {
headertoggle();
}
headertoggle();
基本上,我有这个 header,当人们不再需要它时,它会滑开,当他们需要时,可以再次滑下来。我希望它默认关闭,但我不希望人们必须不断单击 header 切换 every-time 才能加载新页面。我读过有关使用 cookie 的信息,但我在 javascript 方面的技能相当有限。这是我目前使用的运行良好的代码:
<div id="headtoggle" onclick="headertoggle()"></div>
<script>
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
top = "-11px";
pagetop = "275px";
} else {
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
如何更改代码,以便 "remembers" 每个人的最后设置是什么?我愿意也用jquery。对于这个非常新手的编码员的任何帮助将不胜感激。
谢谢, 迪伦
EDIT2:我稍微更改了给我的代码,但遇到了新问题。
<div id="headtoggle" onclick="headertoggle()" onload="topposition()"></div>
<script>
function topposition() {
var top;
var pagetop;
if (localStorage.getItem("headerDown") == "false") {
top = "-11px";
pagetop = "275px";
} else {
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
<script>
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
localStorage.setItem("headerDown", false);
top = "-11px";
pagetop = "275px";
} else {
localStorage.setItem("headerDown", true);
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
</script>
开关按预期工作,但是每当我在 firefox 控制台中触发 "function topposition ()" 时,我都会收到以下错误:
SyntaxError: expected expression, got end of script data:,/* EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE: */%0A%09function%20topposition() Line 2
我会说本地存储将是一个不错的选择。只需记录一个事件或变量或其他任何内容,然后在每次加载页面时检查它。
https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage
您可以使用
创建 cookiedocument.cookie="headerDown=true";
然后当 header 向上移动时用更改为 false 的相同代码覆盖 cookie。
如果您随后添加一些在页面加载时读取 cookie 的代码,您将能够确定需要什么。
您可以通过访问 document.cookie 来读取 cookie,这将是以下格式的任何可用 cookie 的字符串。
cookie1=value; cookie2=value; cookie3=value;
寻找您的 cookie,您应该能够从那里设置 header 是向上还是向下。
使用本地存储将允许您在页面加载之间保存变量。 将 localStorage.setItem(name,value) 添加到您的 if 语句中,如下所示。 如果您只使用 headerToggle 函数来定位这些元素,那么函数下面的 if 语句就足够了。即使您希望 header 关闭,也需要两次调用 header 切换函数。
您需要确保将 if 语句放在 div 的 html 之后,最有可能的最佳位置是页面的最底部。
function headertoggle() {
var top;
var pagetop;
if (document.getElementById("page-header").style.top === "-210px") {
localStorage.setItem("headerDown", true);
top = "-11px";
pagetop = "275px";
} else {
localStorage.setItem("headerDown", false);
top = "-210px";
pagetop = "80px";
}
document.getElementById("page-header").style.top = top;
document.getElementById("page-body").style.top = pagetop;
}
if (localStorage.getItem("headerDown") == "true") {
headertoggle();
}
headertoggle();