Javascript 带有两个输入的Appendchild(),并删除最新发布

Javascript 带有两个输入的Appendchild(),并删除最新发布,javascript,html,Javascript,Html,我有两个输入,文本区(姓名+评论)和提交按钮。Onclick应该从输入和文本区域发布文本。我使用appendchild(),但需要调用textarea。 1.我该怎么做? 2.按钮“删除”删除所有帖子,但我只需要删除最后一篇。那么这怎么可能呢? 谢谢你的建议 代码如下: <script type="text/javascript"> function append(form) { if (form.input.value) { var

我有两个输入,文本区(姓名+评论)和提交按钮。Onclick应该从输入和文本区域发布文本。我使用appendchild(),但需要调用textarea。 1.我该怎么做? 2.按钮“删除”删除所有帖子,但我只需要删除最后一篇。那么这怎么可能呢? 谢谢你的建议

代码如下:

<script type="text/javascript">
    function append(form) {
        if (form.input.value) {
            var newItem = document.createElement("div");
            newItem.appendChild(document.createTextNode(form.input.value));
            document.getElementById("myDiv").appendChild(newItem);
        }
    }

    function restore() {
        var oneChild;
        var mainObj = document.getElementById("myDiv");
        while (mainObj.childNodes.length > 0) {
            oneChild = mainObj.lastChild;
            mainObj.removeChild(oneChild);
        }
    }
</script>
<form>Name:
    <br>
    <input type="text" name="input" />
    <br />Comment:
    <br>
    <textarea type="text" name="textarea"></textarea>
    <br />
    <input type="button" value="Submit" onclick="append(this.form)" />
    <input type="button" value="Delete" onclick="restore()" />
</form>
<div id="myDiv"></div>

函数附加(表单){
if(form.input.value){
var newItem=document.createElement(“div”);
appendChild(document.createTextNode(form.input.value));
document.getElementById(“myDiv”).appendChild(newItem);
}
}
函数还原(){
一个孩子;
var mainObj=document.getElementById(“myDiv”);
while(mainObj.childNodes.length>0){
oneChild=mainObj.lastChild;
mainObj.removeChild(独生子女);
}
}
姓名:


评论:


问题是因为你说的是当有帖子时删除最后一篇

仅将此代码放入
还原
。它将删除最后一个孩子一次

function restore() {
    var oneChild;
    var mainObj = document.getElementById("myDiv");
    oneChild = mainObj.lastChild;
    mainObj.removeChild(oneChild);
}

要解决您的问题,请执行以下操作:

function append(form) {
  if (form.input.value) {  
    var newItem = document.createElement("div");
    newItem.appendChild(document.createTextNode(form.input.value));
    //add a line break and the text from textarea
    newItem.appendChild(document.createElement("br"));
    newItem.appendChild(document.createTextNode(form.textarea.value));
    document.getElementById("myDiv").appendChild(newItem);
  }
}
如果只想删除最后一项,则必须将
while
循环转换为
If
条件:

function restore() {
  var oneChild;
  var mainObj = document.getElementById("myDiv");
  if (mainObj.childNodes.length > 0) {
    oneChild = mainObj.lastChild;
    mainObj.removeChild(oneChild);
  }
}

您可以使用JSFIDLE…
,但我只需要删除最后一个。哪一个?在尝试删除它之前,请检查以确保有最后一个孩子?即,将OP的
while
替换为
if