9

我在 html 中有两个名为“answerdiv 1”和“answerdiv 2”的 div。

现在我想给/创建唯一的 div id,比如“answerdiv 3”“answerdiv 4”“answerdiv 5”等等。

使用 javascript/jquery 我如何在这些动态创建的 div 中追加内容,其中 id 应该是唯一的?

在我的项目中,用户可以添加“n”个 div,没有严格的限制。

帮帮我。

感谢进阶

==================================================== ===============================

我的 HTML 代码是:

<div id="answertextdiv">
   <textarea id="answertext" name="answertext" placeholder="Type answer here" rows="2" cols="40" tabindex="6" onBlur="exchangeLabelsanswertxt(this);"></textarea>
</div>

我的 JS 代码:

function exchangeLabelsanswertxt(element)
{
    var result = $(element).val();
    if(result!="")
    {
        $(element).remove();
        $("#answertextdiv").append("<label id='answertext' onClick='exchangeFieldanswertxt(this);'>"+result+"</label>");
    }
}
function exchangeFieldanswertxt(element)
{
    var result = element.innerHTML; 
    $(element).remove();
    $("#answertextdiv").append("<textarea id='answertext' name='answertext' placeholder='Type answer here' rows='2' cols='40' tabindex='6' onBlur='exchangeLabelsanswertxt(this);'>"+result+"</textarea>");
}

现在,从上面的代码中,我想将所有内容附加到唯一的“answertextdiv”id 中。

4

7 回答 7

8

如果您的 div 在容器中,例如:

<div id="container">
  <div id="answerdiv 1"></div>
  <div id="answerdiv 2"></div>
</div>

您可以执行以下操作:

//Call this whenever you need a new answerdiv added
var $container = $("container");
$container.append('<div id="answerdiv ' + $container.children().length + 1 + '"></div>');

如果可能的话,尽量不要使用全局变量......它们最终会回来咬你,在这种情况下你真的不需要全局变量。

于 2013-09-24T08:09:21.890 回答
3

您可以尝试这样的方法来创建具有唯一 ID 的 div。

HTML

<input type="button" value="Insert Div" onClick="insertDiv()" />
<div class="container">
 <div id="answerdiv-1">This is div with id 1</div>
 <div id="answerdiv-2">This is div with id 2</div>
</div>

JavaScript

var i=2;
function insertDiv(){

    for(i;i<10;i++)
    {
        var d_id = i+1;



        $( "<div id='answerdiv-"+d_id+"'>This is div with id "+d_id+"</div>" ).insertAfter( "#answerdiv-"+i );

    }


}    

这是演示

于 2013-09-24T08:39:16.777 回答
1

您应该在 Javascript 中保留一个“全局”变量,其中包含创建的 div 的数量,并且每次创建 div 时都会增加它。示例代码:

<script type="text/javascript">
  var divCount = 0;

  function addDiv(parentElement, numberOfDivs) {
    for(var i = 0; i < numberOfDivs; i++) {
      var d = document.createElement("div");
      d.setAttribute("id", "answerdiv"+divCount);
      parentElement.appendChild(d);
      divCount++;
    }
  }
</script>

请记住,在 Javascript 中做很多事情并不需要 jQuery。它只是一个帮助您“少写多做”的库。

于 2013-09-24T08:03:47.117 回答
1

我在下面使用了相同的 JQuery 代码

$("#qnty1").on("input",function(e)
{
var qnt = $(this).val();
for (var i = 0; i < qnt; i++) {
var html = $('<div class="col-lg-6 p0 aemail1"style="margin-bottom:15px;"><input type="text"  onkeyup= anyfun(this)   class="" name="email1'+i+'" id="mail'+i+'"  > </div><div id=" mail'+i+'" class="lft-pa img'+i+' mail'+i+'"  > <img class="" src="img/btn.jpg" alt="Logo" > </div> <div id="emailer1'+i+'" class=" mailid "></div>');

var $html=$(html);
$html.attr('name', 'email'+i);
$('.email1').append($html);
}
}

我的 HTML 包含如下文本框。

<input type="text" name="qnty1" id="qnty1"  class=""   >

 <div class="email1">
 </div> 
于 2016-07-20T05:42:36.830 回答
0

您需要一个全局计数器(更一般地说:一个唯一的 id 生成器)来显式或隐式地生成 id(后者例如通过选择最后一个生成的 div,由类或其 id 前缀标识)。

然后尝试

var newdiv = null; // replace by div-generating code
$(newdiv).attr('id', 'answerdiv' + global_counter++);
$("#parent").append(newdiv); // or wherever 
于 2013-09-24T08:07:14.427 回答
0

这是您可以尝试的另一种方法

// you can use dynamic Content
var dynamicContent = "Div NO "; 
// no of div you want 
var noOfdiv = 20;

for(var i = 1; i<=noOfdiv; i++){
  $('.parent').append("<div class='newdiv"+i+"'>"+dynamicContent+i+"</div>" )
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
  
</div>

于 2019-05-04T20:23:51.653 回答
0

var newdivcount=0;
    function insertDivs(){
      newdivcount=newdivcount+1;
      var id="answerdiv-"+(newdivcount);
      var div=document.createElement("DIV");
      div.setAttribute("ID",id);
      var input=document.createElement("TEXTAREA");
      div.appendChild(input);
      document.getElementById('container').appendChild(input);  
    }
    <button onclick="insertDivs">InsertDivs</button>
      
      <br>
<div id="container">
    <div id="answertextdiv">
       <textarea id="answertext" name="answertext" placeholder="Type answer here" rows="2" cols="40" tabindex="6" onBlur="exchangeLabelsanswertxt(this);"></textarea>
    </div>
  </div>

于 2016-04-21T13:58:13.637 回答