Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一页上的JavaScript会话存储变量_Javascript_Html - Fatal编程技术网

另一页上的JavaScript会话存储变量

另一页上的JavaScript会话存储变量,javascript,html,Javascript,Html,因此,我对JavaScript相当陌生,我希望能得到一些帮助,使这段代码正常工作。我看了很多其他关于会话存储以及if/else语句的帖子,但似乎仍然没有弄明白 我有一个页面,让我们称之为第1页,它有3个链接,“红色”“绿色”和“蓝色” 当您单击这些链接时,其函数会将会话存储变量“colorVar”设置为所选颜色,然后重定向到名为第2页的页面 加载第2页时,window.onload操作用于根据第1页上设置的变量启动函数。在这种情况下,从第2页开始的函数只显示“您的颜色是” 代码如下: <!

因此,我对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>