【问题标题】:JavaScript: add input element to current divJavaScript:将输入元素添加到当前 div
【发布时间】:2012-04-21 19:45:41
【问题描述】:

我有一个 javascript 函数,它向页面添加一个包含三个输入的 div,以及一个向同一个 div 添加更多输入的链接(想象一下,用户不知道会有多少字段,所以他可以动态添加它们) .

var div=document.createElement("div");
div.innerHTML='<input type="text" name="question" /><br><br>'+
              '<input type="text" name="input1"/><br />'+
              '<input type="text" name="input2"/><br />'+
              '<a href="javascript:addInput()">Add input field</a>';

var parent_div=document.getElementById('dinamicni_div');
parent_div.appendChild(div);

我现在如何实现这个 addInput() 函数以在同一 div 中的最后一个输入(当前为 input2)下方添加一个输入(但在链接上方)?

澄清一下——我有两个动态生成内容的 JS 函数:addDiv(),你可以在上面看到它被缩短了;和我想实现的 addInput() ,它应该在当前 div 中添加一个输入,点击链接。

【问题讨论】:

  • 我们可以看看您要改进的功能吗?
  • 它还没有实现,但现在我已经得到了实现它的提示:)

标签: javascript html add


【解决方案1】:

试试

document.getElementById('yourdiveID').innerHTML += "<input type='text' value='' /><br />";

它将添加到 div 的末尾。

【讨论】:

  • 此方法将在链接之后添加输入,我之前想要它 - 除非输入在它们自己的 div 中。谢谢
【解决方案2】:

给你的链接一个类或 id 并使用这个方法插入:http://api.jquery.com/insertBefore/

编辑:

我同意,问题与 jquery 无关,但提问者暗示,他的要求允许这样做,为了完整起见,这里是 jquery 中的代码(以张贴者无理恐吓学习 jquery)

function createInputMethod(){
    return $('<input type="text" name="question" /><br><br>'+
              '<input type="text" name="input1"/><br />'+
              '<input type="text" name="input2"/><br />');
}

var div = $("<div/>");
div.append(createInputMethod());
div.append($('<a href="javascript:addInput()" id="btn">Add input field</a>');
var parent_div=$('dinamicni_div');
div.appendTo(parent_div);

function addInput(){
   createInputMethod().insertBefore("#btn");
}

【讨论】:

  • 你看到问题中提到了jQuery吗?
  • 确实是 jQuery,但还是感谢您提及它,它看起来不错,我应该学习 jQuery :)
  • @AndrewWhitaker,不,但我仍然喜欢这种可能性
【解决方案3】:

您可以在您创建的 div 中添加一个包含输入字段的 div,然后像以前一样通过附加子项来轻松添加新元素。

【讨论】:

  • 谢谢,从我的角度来看,这将是最优雅的答案。我将使用这个或 jQuery 解决方案。
  • 你可以将布局和jQuery结合起来,让它变得简单优雅:)
  • 嗯,使用 jQuery 不会像我几年前使用它那样简单 :)
【解决方案4】:

我会做这样的事情。获取所有输入。计算输入数量并使用 jquery after 方法添加。代码是这样的:

function addInputMethod() {

    var len = $('div').find('input').length;


    $('input:nth-child(' + len + ')').after('<input type="text" name="input' + (len + 1) +'"/><br />'); 
}

编辑

如果div 没有id,则可以将长度更改为此

var len = $(this).parent().find('input').length;

同样将第二行改为

$(this).parent().find('input:nth-child...

【讨论】:

  • 一个问题 - 因为我有许多包含这些输入的 div,我怎么知道我从其中一个重定向到函数(单击链接)?
  • 安吉,我认为第一行(您的更新)有问题。它会导致错误。你确定没问题?
  • @PrimožKralj 已编辑。我有一个额外的括号。感谢您找到它。
  • 谢谢你,你帮了很多忙。
猜你喜欢
  • 2011-12-09
  • 2016-07-14
  • 1970-01-01
  • 2019-06-24
  • 2012-01-26
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多