我试图在页面加载时预先填写表单。当我回去参加一个会话时间时,如何获得预填充数据?
//inside the validation code
if (formOkay == false){
document.getElementById("textform").innerText = "Check, There are some errors !";
}else {
document.getElementById("textform").innerText = "";
var storage = window.sessionStorage;
var firstName = document.getElementById("firstname").value;
storage.setItem("First_name",firstName);
}
return formOkay;
//inside the function init
//Frist_name = the input name
//firstname = the input id
function init (){
var formId = document.getElementById("myForm");
formId.onsubmit = validatingForm;
//getting the hob reference number using sessionStorage
document.getElementById("job_number").value = sessionStorage.job_number;
var storage = window.sessionStorage;
if (sessionStorage.First_name != "undefined"){
firstName = storage.getItem("First_name");
document.getElementById("firstname").value = firstname;
}else {
alert("your webpage doesn't support webstorage");
}
}
window.onload = init;
为什么我得到这个[对象HTMLInputElement]?
因为JavaScript区分大小写,所以这里:
document.getElementById("firstname").value = firstname;
...你正在使用为元素创建的自动全局,通过给它id
"firstname"
。要使用firstName
变量,请务必将N
大写。
其他几点说明:
firstName
,The Horror of Implicit Globals或var
)。let
将是真实的,除非有人在之前的访问中输入const
这个名字。要检查if (sessionStorage.First_name != "undefined"){
是否存储了"undefined"
值,请与sessionStorage
进行比较:
First_name
或使用undefined
:
if (sessionStorage.First_name !== undefined){
// ^^^^^^^^^^^^^
或使用typeof
并检查if (typeof sessionStorage.First_name != "undefined"){
// ^^^^^^
:
getItem
更多关于null
和if (sessionStorage.getItem("First_name") !== null){
。storage
相反,只是:
window
或使用作业,以反映您以后访问它的方式:
var storage = window.sessionStorage;
var firstName = document.getElementById("firstname").value;
storage.setItem("First_name",firstName);
(就个人而言,我更喜欢sessionStorage.setItem("First_name", document.getElementById("firstname").value);
和sessionStorage.First_name = document.getElementById("firstname").value;
,但这是一种风格选择。)setItem
,但惯用代码将是getItem
。