JavaScript传递检索和传递输入信息nodeValue vs createTextNode

时间:2016-04-16 21:19:00

标签: javascript appendchild nodevalue createtextnode

我遇到过一些我认为在JavaScript中很奇怪的东西。我正在构建一个表单,其构思是提供按需添加表行和字段的功能。你可以想象我开始尝试使用createElementappendChild

为什么当我尝试从输入字段传递值时,无法直接追加并输出到div标记?但是,当首先通过createTextNode传递检索到的值然后输出它有效。

  

控制台说串联pat.appendChild(al)不是   对象

但是pat.appendChild(text)工作正常吗?

<script type="text/javascript">

function appendTr (){

    var pat = document.createElement("p");
    /*var formValue = document.createTextNode("This works, but why doesn\'t the other one");
    p.appendChild(formValue);*/
    var al = document.getElementById("position").value;
    var text = document.createTextNode(al);
    pat.appendChild(text);
    document.getElementById("outer").appendChild(pat);
}

</script>
<form>
    <table id="job">
        <tr>
            <td><input id="y1" name="y1" type="text"></td>
            <td><input id="y2" name="y2" type="text"></td>
            <td><input id="position" name="position" type="text"></td>
            <td><input id="org" name="org" type="text"></td>
            <td><input class="button" id="addRow" type="button" value="+" onclick="appendTr()"></td>
            </tr>
    </table>

</form>
<div id="outer">Not</div>

1 个答案:

答案 0 :(得分:0)

al是一个字符串,text是一个节点。 appendChild的参数必须是一个节点。

直接将al输出到div中,执行以下操作:

document.getElementById("outer").textContent=al;

或者当您希望al中的html代码正常工作时:

document.getElementById("outer").innerHTML=al;