javascript - 如何在创建文本框时动态创建 id?

标签 javascript input dynamic

我正在看这个 fiddle :http://jsfiddle.net/npH8X/

    <div id='parent'>
    <textarea>txt1</textarea>
    <textarea>txt2</textarea>
    <textarea>txt3</textarea>
    </div>
    <button onClick="addBox()">add textarea</button>

    addBox = function(){
    var textBox = document.createElement("textarea");
    document.getElementById("parent").appendChild(textBox);
    }

任何人都有类似的 javascript 示例,但确切地展示了我如何在创建这些框时或之后立即为每个框赋予自己的 ID?

我想创建一个作家的工具,他们可以在其中将信息输入每个框,然后将所有输入移植到一个更大的容器中,因此框需要 ID 才能做到这一点...

谢谢

最佳答案

您需要做的就是设置 .id property创建文本框之后,但在将其插入 DOM 之前。这可以对应于一个变量,并根据它自动递增:

var count = 3; // Corresponding to the existing textbox count

addBox = function() {
  var textBox = document.createElement("textarea");
  count++;
  textBox.id = count;
  document.getElementById("parent").appendChild(textBox);
  console.log("New element's ID: " + textBox.id);
}
<div id='parent'>
  <textarea id="1">txt1</textarea>
  <textarea id="2">txt2</textarea>
  <textarea id="3">txt3</textarea>
</div>
<button onClick="addBox()">add textarea</button>

但是请注意,您不需要提供您的 <textarea>元素 ID,以便能够定位它们。您使用 document.querySelectorAll() 返回所有文本框的集合,包括动态创建的文本框:

addBox = function() {
  var textBox = document.createElement("textarea");
  document.getElementById("parent").appendChild(textBox);
}

checkBoxes = function() {
  console.log(document.querySelectorAll("#parent textarea"));
}
<div id='parent'>
  <textarea>txt1</textarea>
  <textarea>txt2</textarea>
  <textarea>txt3</textarea>
</div>
<button onClick="addBox()">add textarea</button>
<button onClick="checkBoxes()">check boxes</button>

希望对您有所帮助! :)

评论回答:

.querySelectorAll()简单地返回所有 <textarea> 的节点列表元素。因此,您可以使用 3 作为索引访问第四个元素(因为它从 0 开始)。 document.querySelectorAll("#parent textarea")[3]对应第四个<textarea> ,您可以使用 .value 检索其内容属性:

addBox = function() {
  var textBox = document.createElement("textarea");
  document.getElementById("parent").appendChild(textBox);
}

var box4content;

getBox4 = function() {
  if(document.querySelectorAll("#parent textarea")[3]) {
    box4content = document.querySelectorAll("#parent textarea")[3].value;
  }
  console.log("The variable `box4content` has the value: " +  box4content);
}
<div id='parent'>
  <textarea>txt1</textarea>
  <textarea>txt2</textarea>
  <textarea>txt3</textarea>
</div>
<button onClick="addBox()">add textarea</button>
<button onClick="getBox4()">get box 4</button>

关于javascript - 如何在创建文本框时动态创建 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45559066/

相关文章:

javascript - Parse.com 主 key 不允许写入 PFUser currentUser

javascript - 发送到 javascript 的字符串中的文本编码错误

java - 带有数组名称的 playframework 表单输入

C++ 运行时动态内存大小

javascript - jQuery 获取属性

javascript - 使用 jquery 更改一组列的背景颜色而不是前两列

python - 如何为 raw_input 设置默认的可编辑字符串?

css - 当输入在标签标签内时,将单选输入样式设置为按钮

c# - 为什么 C# 编译器不会在静态方法调用实例方法的地方出现错误代码?

c - 动态内存分配 - 二维数组