我正在尝试在页面加载时预先填写表单。回去一次会话后如何获取预填充数据?
//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;
答案 0 :(得分:0)
为什么我得到这个[object 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"
将为true。要检查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
,但这是一种样式选择。)
尽管您可以使用if (formOkay == false){
,但惯用代码为if (!formOkay){
。