如何在页面刷新后延迟javascript函数执行?

时间:2017-07-28 22:11:38

标签: javascript

作为JavaScript的新手,我需要从sessionStorage检索数据并在父输入刷新后填充我的父输入表单以更新一些子记录。我可以调用函数刷新页面和函数来独立地从sessionStorage获取数据,但是我无法组合这些进程,以便a)页面完全重新加载,然后b)从sessionStorage检索数据页面重新加载后。怎么能这样做?

我的页面刷新代码(尝试使用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>

2 个答案:

答案 0 :(得分:0)

你可以这样做:

 [HttpGet, ActionName("GetByName")]
 public TableName Get(string name)
 {
     DBEntities entities = new DBEntities();
     return entities.TableName.FirstOrDefault(e => e.Name == name);
 }
 [HttpGet]
 public TableName Get(int id)
 {
     DBEntities entities = new DBEntities();
     return entities.TableName.FirstOrDefault(e => e.ID == id);
 }

答案 1 :(得分:0)

当您在refreshPage()函数内执行函数时,它将执行上一条指令以刷新页面location.reload(),因此它将刷新页面,由于页面重新加载而停止函数执行并且以下代码挂起永远不会执行。

您应该在页面刷新/加载后对文档正文的load事件执行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);
    }