Javascript 错误:未捕获类型错误:无法读取null的属性“值”

Javascript 错误:未捕获类型错误:无法读取null的属性“值”,javascript,html,Javascript,Html,我想知道为什么会发生未捕获的TypeError:无法读取null的属性“value” 我错在哪里 function create() { var textbox=document.createElement("input"); var para=document.createElement("p"); para.setAttribute("id","p"); textbox.typ

我想知道为什么会发生未捕获的TypeError:无法读取null的属性“value” 我错在哪里

 function create()
        {
            var  textbox=document.createElement("input");
            var para=document.createElement("p");
            para.setAttribute("id","p");
            textbox.type='text';
            textbox.value='asdf';
            textbox.setAttribute("id","textbox");
                           textbox.setAttribute("onblur",document.getElementById('p').innerHTML=document.getElementById('textbox').value);
            document.body.appendChild(textbox);
        }

在将元素添加到DOM之前,不能使用.getElementById搜索它。该调用返回null,这就是错误告诉您的

无论如何,这样做是没有意义的,因为已经有了直接引用新创建元素的变量。等等,我知道你想做什么了

首先,这里没有理由使用.setAttribute。只需直接在已创建的DOM节点上设置属性。必须将onblur属性设置为函数:

function create() {
            var  textbox=document.createElement("input");
            var para=document.createElement("p");
            para.id = "p";
            textbox.type='text';
            textbox.value='asdf';
            textbox.id = "textbox";
            textbox.onblur = function() {
              para.innerHTML = textbox.value;
            };
            document.body.appendChild(textbox);
            document.body.appendChild(para);
        }

我将尝试解决您的代码中的一些问题,希望它们能神奇地匹配您的HTML:

function create(){
    var textbox = document.createElement("input");
    var para = document.createElement("p");
    para.setAttribute("id", "p");
    textbox.type = 'text';
    textbox.value='asdf';
    textbox.setAttribute("id","textbox");
    // The following is a valid way to attach an event handler:
    textbox.onblur = function(){ 
        para.innerHTML = document.getElementById('textbox').value);
    }
    document.body.appendChild(textbox);
}

您应该这样修改函数,使其工作。 如果要使用setAttribute,则必须将其包装到onBlur事件的函数中

或者您可以签出,看看它是如何工作的

如果元素为null,建议在前面的回答中进行检查,但在本例中,不需要检查,因为您正在创建函数中的所有元素,因此所有元素都将存在

另外,您计划如何处理段落元素? 也许把输入的内容放在段落中

如果你想添加段落,只需添加

document.body.appendChild(para);

我以前也遇到过类似的问题:

未捕获的TypeError:无法读取null的属性“值”

这意味着您可能没有为函数查找值设置id,以便它可以检索该值

例如:

<input type='text' />
<div onclick='myfunc()'></div> 
function myfunc() {
   text = document.getElementById('msg').value;
}
这将返回您得到的以下错误。 正确的方法:


希望有帮助

好的,我也遇到了同样的问题。做一件事,javascript文件的脚本选项卡将其放在html的底部,这样html页面中的任何输入都可以被js文件识别,因为javascript将位于您想要使用的值之后

我们怎么知道?请参阅。这意味着您正试图从一个为null的变量中获取名为value的属性。抱歉,但此标题是否可以再通用?可能重复-尽管我认为此问题中存在的误解与该规范副本中假定的误解略有不同。否决票有点过多。问题是好的,只是标题不好。我添加了一行来附加您创建的,因为如果您不这样做,任何一行都没有意义。
<input type='text' />
<div onclick='myfunc()'></div> 
function myfunc() {
   text = document.getElementById('msg').value;
}
<input type='text' id='msg'/>
<div onclick='myfunc()'></div>      
function myfunc() {
     text = document.getElementById('msg').value;
    }