为什么我得到这个[对象HTMLInputElement]?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我得到这个[对象HTMLInputElement]?相关的知识,希望对你有一定的参考价值。

我试图在页面加载时预先填写表单。当我回去参加一个会话时间时,如何获得预填充数据?

//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大写。


其他几点说明:

  1. 你没有声明你的qazxsw poi变量,所以你的代码正在成为我称之为qazxsw poi的猎物。声明你的变量(使用firstNameThe Horror of Implicit Globalsvar)。
  2. let将是真实的,除非有人在之前的访问中输入const这个名字。要检查if (sessionStorage.First_name != "undefined"){是否存储了"undefined"值,请与sessionStorage进行比较: First_name 或使用undefinedif (sessionStorage.First_name !== undefined){ // ^^^^^^^^^^^^^ 或使用typeof并检查if (typeof sessionStorage.First_name != "undefined"){ // ^^^^^^ getItem 更多关于nullif (sessionStorage.getItem("First_name") !== null){
  3. 在这段代码中没有理由使用MDN(或the spec): 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; ,但这是一种风格选择。)
  4. 虽然你可以使用setItem,但惯用代码将是getItem

以上是关于为什么我得到这个[对象HTMLInputElement]?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到 null 而不是 Map 对象?如何解决这个问题?

为什么我得到一个对象数组的空指针异常? [重复]

jQuery:返回这个

创建对象是怎样接受原来类中的东西的,就是new之后,创建一个对象,为这个对象分配的内存是怎样得到的?

从实例 ID 访问对象成员

Angular - 为啥我得到对象而不是对象数组?