另一页上的JavaScript会话存储变量
因此,我对JavaScript相当陌生,我希望能得到一些帮助,使这段代码正常工作。我看了很多其他关于会话存储以及if/else语句的帖子,但似乎仍然没有弄明白 我有一个页面,让我们称之为第1页,它有3个链接,“红色”“绿色”和“蓝色” 当您单击这些链接时,其函数会将会话存储变量“colorVar”设置为所选颜色,然后重定向到名为第2页的页面 加载第2页时,window.onload操作用于根据第1页上设置的变量启动函数。在这种情况下,从第2页开始的函数只显示“您的颜色是” 代码如下:另一页上的JavaScript会话存储变量,javascript,html,Javascript,Html,因此,我对JavaScript相当陌生,我希望能得到一些帮助,使这段代码正常工作。我看了很多其他关于会话存储以及if/else语句的帖子,但似乎仍然没有弄明白 我有一个页面,让我们称之为第1页,它有3个链接,“红色”“绿色”和“蓝色” 当您单击这些链接时,其函数会将会话存储变量“colorVar”设置为所选颜色,然后重定向到名为第2页的页面 加载第2页时,window.onload操作用于根据第1页上设置的变量启动函数。在这种情况下,从第2页开始的函数只显示“您的颜色是” 代码如下: <!
<!-- [This is Page 1] -->
<a href="Page2.html" onclick="colorRed()">Set color to red</a>
<a href="Page2.html" onclick="colorBlue()">Set color to blue</a>
<a href="Page2.html" onclick="colorGreen()">Set color to green</a>
<script>
function colorRed() {
sessionStorage.setItem("colorVar", "red");
}
function colorBlue() {
sessionStorage.setItem("colorVar", "blue");
}
function colorGreen() {
sessionStorage.setItem("colorVar", "green");
}
</script>
<!-- [This is Page 2] -->
<script>
window.onload = sessionStorage.colorVar + 'Write()';
function redWrite() {
document.write("Your color is red!")
}
function blueWrite() {
document.write("Your color is blue!")
}
function greenWrite() {
document.write("Your color is green!")
}
</script>
函数colorRed(){
sessionStorage.setItem(“colorVar”、“red”);
}
函数colorBlue(){
sessionStorage.setItem(“colorVar”、“blue”);
}
函数colorGreen(){
setItem(“colorVar”、“绿色”);
}
window.onload=sessionStorage.colorVar+'Write()';
函数redWrite(){
文档。写下(“你的颜色是红色的!”)
}
函数blueWrite(){
文档。写下(“你的颜色是蓝色的!”)
}
函数greenWrite(){
文档。写下(“你的颜色是绿色的!”)
}
您可以将会话存储作为查询字符串传递到的href
功能颜色(elem){
event.preventDefault();
setItem(“colorVar”,elem.dataset.color);
location.href=elem.href+“?colorVar=“+sessionStorage.getItem”(“colorVar”);
}
在第2.html页
<script>
window.onload = function() {
document.write("Your color is " + location.search.split("=").pop())
}
</script>
window.onload=函数(){
document.write(“您的颜色是”+location.search.split(“=”).pop())
}
plnkr编辑:很明显,它比我提供的要好得多。我将把这个留给未来的观众——也许我的措辞有时会帮助别人
泰勒
两件事
sessionStorage()
对于每个页面/选项卡都是唯一的。“在新选项卡或窗口中打开页面将启动新会话””
窗口。onload
为。您只是在连接一个字符串
如果您找到一种不同的方式将信息从一个页面传递到另一个页面(您可以将其填充到URL中),则新的颜色函数应该如下所示:
<script>
window.onload = writeColor(sessionStorage.colorVar);
function writeColor(color) {
document.write("Your color is " + color + "!")
}
</script>
window.onload=writeColor(sessionStorage.colorVar);
函数writeColor(颜色){
文档。写下(“你的颜色是“+颜色+”!”)
}
不能将window.onload设置为字符串;你必须把它直接指向一个函数
我建议创建一个新函数(称为writeColor),该函数包含基于sessionStorage.colorVar
值的if
语句;然后你可以做window.onload=writeColor代码>
或者,将window.onload行更改为window.onload=window[sessionStorage.colorVar+'Write']
将从全局范围获取函数并将其分配给window.onload 在新选项卡或窗口中打开页面将启动新会话。请参阅更多信息,如果在与第1页相同的选项卡中打开“第2页”,会话存储是否仍能工作,或者这是否也会导致启动新会话?它无法工作。你应该使用本地存储。为什么不给每个URL指定一个变量呢?这是目前为止解决这个问题的最好办法。干得好!
<script>
window.onload = writeColor(sessionStorage.colorVar);
function writeColor(color) {
document.write("Your color is " + color + "!")
}
</script>