首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中创建具有动态名称的表单元素?

在Javascript中创建具有动态名称的表单元素?
EN

Stack Overflow用户
提问于 2022-09-20 07:07:41
回答 4查看 48关注 0票数 0

在我的身体里,我有一个这样的div

代码语言:javascript
复制
<div>
  <button type="button" class="btn btn-seconday" onclick="addCourse()">Add Course</button>
  <div id="course_add" class="container">
    <div class="form-group">
      <label for="course name">Course Name</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[0][course_name]"/>
    </div>
    <div class="form-group">
      <label for="no_of_students">Number of Students</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[0][no_of_students]"/>
    </div>
  </div>
</div>

单击按钮时,我希望它在div容器中再次创建输入字段。但有着动态的名字。就像第一次创建按钮一样,它应该是

代码语言:javascript
复制
    <div class="form-group">
      <label for="course name">Course Name</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[1][course_name]"/>
    </div>
    <div class="form-group">
      <label for="no_of_students">Number of Students</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[1][no_of_students]"/>
    </div>

我需要

courses1 & courses1

每当创建新输入时,这些名称都将递增。

我不知道在addCourse()函数中应该做什么。

代码语言:javascript
复制
function addCourse() {
        i = 1;
        var mydiv = document.getElementById("course_add");
        console.log(mydiv);
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-09-20 07:20:08

您可以尝试这种方法。

代码语言:javascript
复制
let index = 0;

function addCourse() {
  const courseHtml = generateCourse(index++);
  var mydiv = document.getElementById("course_add");
  mydiv.insertAdjacentHTML('beforeend', courseHtml);
}

function generateCourse(indexValue) {
  return `<div class="form-group">
      <label for="course name">Course Name</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[${indexValue}][course_name]"/>
    </div>
    <div class="form-group">
      <label for="no_of_students">Number of Students</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[${indexValue}][no_of_students]"/>
    </div>`
}

//add the first course instead of using HTML directly
addCourse()
代码语言:javascript
复制
<div>
  <button type="button" class="btn btn-seconday" onclick="addCourse()">Add Course</button>
  <div id="course_add" class="container">
  </div>
</div>

票数 1
EN

Stack Overflow用户

发布于 2022-09-20 07:21:42

首先,注意您使用的是getElementById,在html中设置的是name属性。要做您愿意做的事情,您需要使用createElement并附加元素。

代码语言:javascript
复制
let index = 0;
const containerDiv = document.getElementById('course_add');
function addCourse(){
    const formGroupDiv = document.createElement('div')
    formGroupDiv.setAttribute('class','form-group');
    const input = document.createElement('input');
    input.setAttribute('id',`courses[${index}][course_name]`);
    formGroupDiv.appendChild(input);
    containerDiv.appendChild(formGroupDiv);
    index++;
}
票数 0
EN

Stack Overflow用户

发布于 2022-09-20 07:23:20

您可以简单地尝试一下这个:

代码语言:javascript
复制
let i = 1;
function addCourse() {
  var mydiv = document.getElementById("course_add");
  mydiv.innerHTML += `<div class="form-group">
    <label for="course name">Course Name</label>
    <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[${i}][course_name]" />
  </div>
  <div class="form-group">
    <label for="no_of_students">Number of Students</label>
    <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[${i}][no_of_students]" />
  </div>`;
  i++;
}
代码语言:javascript
复制
<div>
  <button type="button" class="btn btn-seconday" onclick="addCourse()">Add Course</button>
  <div id="course_add" class="container">
    <div class="form-group">
      <label for="course name">Course Name</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[0][course_name]" />
    </div>
    <div class="form-group">
      <label for="no_of_students">Number of Students</label>
      <input type="text" class="block rounded py-1 ml-4 text-sm" name="courses[0][no_of_students]" />
    </div>
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73782802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档