Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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 如果浏览器崩溃,并且我再次访问同一页面,setTimeout如何将数据保存并加载回表单输入?_Javascript_Forms_Dom_Javascript Events - Fatal编程技术网

Javascript 如果浏览器崩溃,并且我再次访问同一页面,setTimeout如何将数据保存并加载回表单输入?

Javascript 如果浏览器崩溃,并且我再次访问同一页面,setTimeout如何将数据保存并加载回表单输入?,javascript,forms,dom,javascript-events,Javascript,Forms,Dom,Javascript Events,setTimeout如何保存和加载选定表单输入的数据?我试图让它与事件侦听器一起工作。我检查了捕获和泡泡,我仍在努力将其包围 我需要它设置或获取从输入字段分配给各个元素的值,这取决于字段上是否有更改,例如焦点或模糊 是否有我错过的功能或步骤,我应该从哪里开始寻找 answers = document.getElementsByName('answers[]'); for(var i = 0; i < answers.length; i++) { nodeIndex = 'ans

setTimeout如何保存和加载选定表单输入的数据?我试图让它与事件侦听器一起工作。我检查了捕获和泡泡,我仍在努力将其包围

我需要它设置或获取从输入字段分配给各个元素的值,这取决于字段上是否有更改,例如焦点或模糊

是否有我错过的功能或步骤,我应该从哪里开始寻找

    answers = document.getElementsByName('answers[]');
for(var i = 0; i < answers.length; i++) {
  nodeIndex = 'answer' + i;
  if(answers[i] == ''){
    answers[i].addEventListener('blur', function(){
      localStorage.setItem(nodeIndex, answers[i].value);
    });
  }
  else {
    answers[i].addEventListener('focus', function(){
      answers[i].value = localStorage.getItem(nodeIndex);
      localStorage.setItem(nodeIndex, answers[i].value);
    });
    answers[i].addEventListener('blur', function(){        
      localStorage.setItem(nodeIndex, answers[i].value);
      answers[i].value = localStorage.getItem(nodeIndex);
    });
  } // end if

} // end forloop
修改 我注意到只有最后一个元素受到影响。当我在答案[0]到答案[14]中输入文本时,它们的值将被保存并仅设置/复制到最后一个元素。我怎么会用错这个?我读了起来,似乎遵守了规则

    function processAnswers(i, answers) {
  setTimeout(function() {
    nodeIndex = 'answer' + i;          
    if(localStorage.getItem(nodeIndex) === null) {

      answers[i].addEventListener('blur', function(){
        localStorage.setItem(nodeIndex, answers[i].value);
      });

    } // end if
    else {

      answers[i].addEventListener('focus', function(){
        answers[i].value = localStorage.getItem(nodeIndex);
        localStorage.setItem(nodeIndex, answers[i].value);

      });
      answers[i].addEventListener('blur', function(){        
        localStorage.setItem(nodeIndex, answers[i].value);
        answers[i].value = localStorage.getItem(nodeIndex);
      });

    } // end else
  }, 100); // end setTimeout()
} // end processAnswers();

 answers = document.getElementsByName('answers[]'); 
 for(var i = 0; i < answers.length; i++) {
   processAnswers(i, answers);
 }
我的密码失控了。我决定从头开始,保持简单。。。成功了

var answers;
var clearAnswersBtn;
var clearAnswers;

var MainLoop = function MainLoopFunction(){

  answers = document.getElementsByName('answers[]');
  clearAnswersBtn = document.getElementsByTagName('body')[0];
  clearAnswersBtn.innerHTML = clearAnswersBtn.innerHTML + '<button id="clearanswers" style="position:fixed;bottom:0;right:0;padding:5px;margin:0 10px 10px 0;z-index:99999">Clear Saved Answers</button>';

  clearAnswers = document.getElementById('clearanswers');

  clearAnswers.addEventListener("click", function(){
    localStorage.clear();
    alert("Answers Cleared!");
  });

  function saveAnswers(i, answer){
    if(localStorage.getItem(i)) {
      answer.value = localStorage.getItem(i);
    }
    else {
      answer.addEventListener("blur", function(){
    if(!localStorage.getItem(i)) {
      localStorage.setItem(i, answer.value);
    }      
      });
    }
  } // end saveAnswers()

  setTimeout(function(){
    for( var i = 0; i < answers.length; i++) {
      saveAnswers(i, answers[i]);
    }
  }, 0)
}();

你有setTimeout在循环中的问题,使用一个anon函数包装器我想我已经把结构搞定了。。。但是缺少了什么?