0

我有这个问题有一段时间了,它一直让我发疯!它不会使我的网站崩溃或使其无法使用,但仍然令人愤怒。我有一个标签,因此用户可以为表单内的任何给定答案创建最多十个问题,还有一个 javascript 按钮,以便他们可以添加另一个答案。我遇到的麻烦是,如果他们使用按钮添加一些答案文本字段并填写它们,当他们使用按钮添加另一个答案时,它会覆盖他们刚刚提交的所有答案!到 jsfiddle 的链接是http://jsfiddle.net/EkUmG/,这是我的实际 html 文档中相关的代码(我会包含整个文件,但上面有 php,所以你不能只是拖放它无论如何进入浏览器)

  • 提前感谢您的帮助

这是html

<div id='buttons'></div>

(是的,我意识到该 div 的名称不合适,对此感到抱歉)

这是javascript

<script type="text/javascript">
    var answers = 0;
    var inHTML = "";
    function addAnswer()
    {
       if(answers < 10){
       write = document.getElementById('buttons');
       write.innerHTML = write.innerHTML + "answer: <input type=\"text\" name=\"answer"    + answers + "\" /> <br>";
       answers = answers + 1;}
    }
</script>
4

2 回答 2

3

通过写入innerHTML属性,您可以使浏览器重新解析所有内容,然后重置输入字段的值。

相反,使用insertAdjacentHTML演示)。

请注意,FF 仅从版本 8 开始支持此方法。如果您需要支持较低版本,您可以使用此 polyfill或使用@Stano 的解决方案。

于 2012-07-27T14:34:40.577 回答
2

您可以使用替代的 DOM 方法而不是 innerHTML:

function addAnswer() {
    if (answers < 10) {
        write = document.getElementById('buttons');
        var answer = document.createElement('input');
        answer.type = "text";
        answer.name = "answer" + answers;
        write.appendChild(document.createTextNode('answer: '));
        write.appendChild(answer);
        write.appendChild(document.createElement('br'));
        answers = answers + 1;
    }
}

小提琴

于 2012-07-27T14:42:12.930 回答