Javascript InnerHTML 删除表单元素中的数据

标签 javascript html

我有一个带有按钮的表单,允许您向表单添加字段。

<form id="contact" name="contactForm" action="newPoll.php" method="post">
                        <fieldset>
                            <legend>Create A Poll</legend><br style="clear:both;">           

                                <ol>
                                    <li><lable for=pollTitle>Poll Title:</lable><input name="pollTitle" id="pollTitle" type="text" size="66"  /> </li>
                                    <li><lable for=question>1st Question:</lable><input name="question" id="question" type="text" size="66"  /> </li>
                                    <li><lable for=answerType>Constrained:</lable><input name="answerType" id="answerType" value="Constrained" type="radio" size="66"  /><span style="margin: 0 0 0 40px;">
                                    Unconstrained: <input style="margin-right: 30px;" name="answerType" value="Unconstrained" id="question" type="radio" size="66"  /></span>(Allow multiple answers) </li>
                                    <li><lable for=answer1>Answer:</lable><input name="answer1" id="answer1" type="text" size="66" /> </li>
                                    <li><lable for=answer2>Answer:</lable><input name="answer2" id="answer2" type="text" size="66" /> </li>
                                    <li><lable for=answer3>Answer:</lable><input name="answer3" id="answer3" type="text" size="66" /> </li>
                                    <li><lable for=answer4>Answer:</lable><input name="answer4" id="answer4" type="text" size="66" /> </li>

                            </ol><br />
                        </fieldset>
            <input type="button" value="Add More Answers" name="addAnswer" onClick="generateRow()" /><input type="submit" name="submit" value="Add Another Question">
</form>

这里是 generateRow():

var count = 5;

function generateRow() {
    var d=document.getElementById("contact");
    var b = document.getElementById("answer4");
    var c =b.name.charAt(0);
    var f = b.name.substr(0, 6);
    var y = f + count;
    count = count + 1;
    d.innerHTML+='<li><lable for=' + y + '>Answer:</lable><input name="' + y + '" id="' + y    + '" type="text" size="66"/> </li>';
}

问题是每当添加新行时,它都会删除可能已在任何非原始(添加)文本字段中键入的所有输入。它应该将数据留在表单元素中

最佳答案

当您设置innerHTML 属性时,浏览器解析HTML 并为其创建一个新的DOM 树,然后用新的DOM 树替换当前的DOM 树。这会破坏任何不在 HTML 中的数据。

您需要使用 createElementappendChild 或使用 jQuery 附加 DOM 元素(更容易)。

关于Javascript InnerHTML 删除表单元素中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411872/

相关文章:

javascript - Aurelia css 与函数绑定(bind)

javascript - 隐藏后如何保留 bootstrap popover 的内容,或者如何真正隐藏它

html - 使图像适合幻灯片容器

html - 灵活的缩略图溢出

javascript - 如何编写以下标准的语法 - ANTLR4 语法 - 自定义表达式

javascript - 搜索输入名称

javascript - 加入和着色 TR

javascript - X 秒后仅刷新指定的 div?

css - 窗口中 div 的垂直+水平居中最简单的方法是什么?

html - 如何使用 tidy 删除所有 HTML 标签