Javascript 如何使用多项选择循环表单,以生成多个表单?
我想让用户输入他们从下拉列表中选择的所有科目,同时也输入他们从下拉列表中选择的成绩。我对每个输入都使用一个表单,但我意识到如果我复制粘贴所有表单,这是一个糟糕的代码。如果我对下拉列表做了任何更改,我必须修改它6次。我想做一个For循环,但它是HTML。有办法解决这个问题吗 我想做一个For循环,但是它是HTML,所以我不知道它的语法是什么,或者有没有办法在HTML中循环。还是我应该把这些代码转移到Javascript上 `Javascript 如何使用多项选择循环表单,以生成多个表单?,javascript,html,Javascript,Html,我想让用户输入他们从下拉列表中选择的所有科目,同时也输入他们从下拉列表中选择的成绩。我对每个输入都使用一个表单,但我意识到如果我复制粘贴所有表单,这是一个糟糕的代码。如果我对下拉列表做了任何更改,我必须修改它6次。我想做一个For循环,但它是HTML。有办法解决这个问题吗 我想做一个For循环,但是它是HTML,所以我不知道它的语法是什么,或者有没有办法在HTML中循环。还是我应该把这些代码转移到Javascript上 ` 主题 英语 初等数学 附加数学 物理 化学 文学类 联合人类(SS+历
主题
英语
初等数学
附加数学
物理
化学
文学类
联合人类(SS+历史)
母语
等级
A1
A2
地下三层
B4
碳五
C6
C7
E8
F9
`
它将显示一种形式。我需要有6个完全相同的布局形式。我不想复制粘贴它。我宁愿使用某种循环。我们可以为主题和等级创建两个数组,并对它们进行迭代,然后将每个主题/等级添加到相应的select标记中
const subjects = [
{ name: "English", value: "English" },
{ name: "Elementary Maths", value: "Maths/Science" },
{ name: "Additional Maths", value: "Maths/Science" },
{ name: "Physics", value: "Maths/Science" },
{ name: "Chemistry", value: "Maths/Science" },
{ name: "Literature", value: "Humans" },
{ name: "Combined Humans (SS+History)", value: "Humans" },
{ name: "Mother Tongue", value: "Humans" }
];
const grades = [
{ name: "A1", value: "1" }, { name: "A2", value: "2" },
{ name: "B3", value: "3" }, { name: "B4", value: "4" },
{ name: "C5", value: "5" }, { name: "C6", value: "6" },
{ name: "C7", value: "7" }, { name: "E8", value: "8" },
{ name: "F9", value: "9" }
];
const createOption = option => {
let optionEl = document.createElement('option');
optionEl.value = option.value;
optionEl.innerText = option.name;
return optionEl;
}
function addOptions(subjectTagId, options) {
const select = document.getElementById(subjectTagId);
options.forEach(option => select.appendChild(createOption(option)));
}
addOptions('subjects', subjects);
addOptions('grades', grades)
注意:向科目选择标记添加id
“科目”
,就像为成绩选择标记添加id一样。希望这有帮助:)这里有一个使用cloneNode()的简单方法。
:
for(i=1;i您的问题答案是否。您不能在HTML中循环。HTML是一种描述性语言,它描述页面的元素
为了使自己具有编程功能,HTML定义了
标记。浏览器支持它,并能够解释和执行它包含的代码。出于历史原因,代码是用javascript语言编写的
在您的情况下,您需要以编程方式更改页面的内容。为此,您不需要更改HTML,而是在页面加载完成后操作DOM,这是页面在浏览器中的内部表示形式。浏览器中的javascript支持使一些访问DOM和操作的方法标准化(插入、删除、更改)DOM内容
您首先必须在页面内创建一个
标记
。延迟
属性指定您希望在加载完整页面并构建DOM后运行代码
<script defer>
</script>
然后,您需要(1)在页面中找到您的
(2)复制五次(3)提供所有副本(包括原始)唯一ID,以及(4)在原始表单之后、原始表单后面的下一个元素之前将副本插入DOM
let originalForm=document.querySelector("form"); //(1)
let insertionPoint=form.nextSibling; //(4)
originalForm.id="form-1"; //(3)
for (let i=2;i<=6;i++) { //(2)
let copied = originalForm.cloneNode(true); //(2)
copied.id='form-'+i; //(3)
originalForm.parentNode.insertBefore(copied, insertionPoint); //(4)
}
let originalForm=document.querySelector(“表单”);/(1)
让insertionPoint=form.nextSibling;//(4)
originalForm.id=“form-1”/(3)
for(让i=2;iThanks!我能理解为什么需要更改id吗?因为属性id必须是唯一的,所以它的值在元素的主子树中的所有id中必须是唯一的。
let originalForm=document.querySelector("form"); //(1)
let insertionPoint=form.nextSibling; //(4)
originalForm.id="form-1"; //(3)
for (let i=2;i<=6;i++) { //(2)
let copied = originalForm.cloneNode(true); //(2)
copied.id='form-'+i; //(3)
originalForm.parentNode.insertBefore(copied, insertionPoint); //(4)
}