2017-07-28 53 views
1

作为JavaScript新手,我需要从sessionStorage中检索数据,并在父输入刷新后填充父输入表单以更新某些子记录。我可以调用函数来刷新页面和函数以独立地从sessionStorage获取数据,但我一直无法合并这些过程,以便a)页面完全重新加载,然后b)从sessionStorage中检索数据在页面重新加载之后。如何做到这一点?如何在页面刷新后延迟javascript函数执行?

我的页面刷新(与尝试要结合使用的setTimeout方法的功能),代码如下:

<script> 
function refreshPage() { 
location.reload(); 
setTimeout(GetSessionData, 4000); 
} 
</script> 

我的函数来获取数据出来的sessionStorage如下:

<script> 
var inputcollection = document.getElementsByTagName("input"); 

function GetSessionData() { 
    for (var i = 0; i &lt; inputcollection.length; i++) { 
    if(document.getElementById(inputcollection[i].name) != null || document.getElementById(inputcollection[i].name) != undefined) { 
    console.log(i + " " + inputcollection[i].name + "-" + inputcollection [i].value + "-"); 
    if(document.getElementById(inputcollection[i].name).type != "file"){ 
    document.getElementById(inputcollection[i].name).value = sessionStorage.getItem(inputcollection[i].name); 
    }}} 
</script> 
+0

人们不能....页面将重新加载,任何后不会跑步。 – epascarello

回答

0

哟在refreshPage()函数内部它会执行前面的指令,以便刷新页面location.reload(),所以它会刷新页面,由于页面重新加载而停止函数执行,并且下面的代码挂起从不执行。

您应该在执行GetSessionData()函数之后执行页面刷新/加载文档正文的加载事件并将其从刷新中删除。

<html> 
    <head>  
    <!--Many things --> 
    <script> 
    function refreshPage() { 
     location.reload(); 
    } 
    </script> 
    </head> 
    <body onload="GetSessionData()"> 
    <!-- Your body code --> 
    </body> 
</html> 

如果你想用setTimeout函数添加的延迟,你应该把到另一个函数或内部GetSessionData

function GetSessionData() { 
    setTimeOut(function(){ 
     for (var i = 0; i < inputcollection.length; i++) { 
      if(document.getElementById(inputcollection[i].name) != null || 
      document.getElementById(inputcollection[i].name) != undefined) { 
       console.log(i + " " + inputcollection[i].name + "-" + 
       inputcollection [i].value + "-"); 
       if(document.getElementById(inputcollection[i].name).type != "file"){ 
        document.getElementById(inputcollection[i].name).value = sessionStorage.getItem(inputcollection[i].name); 
       } 
      } 
     } 
     },4000); 
    } 
+0

感谢您的解释 - 这是非常有用的 – DGassaway

0

你可以做这样的事情:当你正在执行

<script> 

    //Declare your function 
    function GetSessionData() { 
     for (var i = 0; i &lt; inputcollection.length; i++) { 
      if(document.getElementById(inputcollection[i].name) != null || document.getElementById(inputcollection[i].name) != undefined) { 
       console.log(i + " " + inputcollection[i].name + "-" + inputcollection [i].value + "-"); 
       if(document.getElementById(inputcollection[i].name).type != "file"){ 
        document.getElementById(inputcollection[i].name).value = sessionStorage.getItem(inputcollection[i].name); 
       } 
      } 
     } 
    } 
    //When the page is loaded (or reloaded in your case), set theTimeout which will call the GetSessionData, 
    document.addEventListener("DOMContentLoaded", function(event) { 
     setTimeout(GetSessionData, 4000); 
    }); 

    //Declaring your refresh function 
    function refreshPage() { 
     location.reload(); 
    } 
</script> 
+0

感谢您的代码建议 – DGassaway