JavaScript构造函数返回未定义的值

JavaScript构造函数返回未定义的值,javascript,function,object,constructor,Javascript,Function,Object,Constructor,我试图创建一个脚本,在提交时从表单值创建一个对象,但在每次提交时返回未定义的值 这是HTML: + 这是我的剧本: (function(){ function Post(title, image, text) { this.title = title; this.image = image; this.text = text; this.date = new Date(); } var post = n

我试图创建一个脚本,在提交时从表单值创建一个对象,但在每次提交时返回未定义的值

这是HTML:


+
这是我的剧本:

(function(){
    function Post(title, image, text) {
        this.title = title;
        this.image = image;
        this.text = text;
        this.date = new Date();
    }

    var post = new Post();

    function Dashboard() {
        var main = document.querySelector("main");
        var article = document.createElement("div");
        article.classList.add("post");
        var title = document.createElement("h1");
        var image = document.createElement("div");
        image.classList.add("img");
        var text = document.createElement("p");
        var date = document.createElement("p");
        var postTitle = post.title;
        var postImage = post.image;
        var postText = post.text;
        var postDate = post.date;
        title.innerText=postTitle;
        image.style.backgroundImage="url("+postImage+")";
        text.innerText=postText;
        date.innerText=postDate;
        article.appendChild(title);
        article.appendChild(image);
        article.appendChild(text);
        article.appendChild(date);
        main.appendChild(article);
    }

    var submit = document.getElementById("submit");

    submit.addEventListener("click", function(){
        var inputTitle = document.querySelector(".title").value;
        var inputImage = document.querySelector(".image").value;
        var inputText = document.querySelector(".text").value;
        var post = new Post(inputTitle, inputImage, inputText);
        Dashboard();
    });
    
})();

您正在单击处理程序中创建一个新变量
post
,但您的
仪表板正在使用它在闭包中捕获的变量。您可以使
仪表板
函数接受post作为参数

功能帖子(标题、图像、文本){
this.title=标题;
这个图像=图像;
this.text=文本;
this.date=新日期();
}
功能仪表板(post){
var main=document.querySelector(“main”);
var article=document.createElement(“div”);
文章.classList.add(“post”);
var title=document.createElement(“h1”);
var image=document.createElement(“div”);
image.classList.add(“img”);
var text=document.createElement(“p”);
var日期=document.createElement(“p”);
var postTitle=post.title;
var postImage=post.image;
var postText=post.text;
var postDate=post.date;
title.innerText=postTitle;
image.style.backgroundImage=“url(“+positmage+”);
text.innerText=postText;
date.innerText=postDate;
第条.儿童(头衔);
第条.儿童(图像);
第条.儿童(文本);
第条.儿童(日期);
主要条款(第条);
}
var submit=document.getElementById(“提交”);
submit.addEventListener(“单击”,函数(){
var inputTitle=document.querySelector(“.title”).值;
var inputImage=document.querySelector(“.image”).value;
var inputText=document.querySelector(“.text”).值;
var post=新post(输入标题、输入图像、输入文本);
仪表板(员额);
});

+