Javascript 使用 Javascript 创建的表单的函数
Javascript function for form created using Javascript
我有一个脚本,当单击按钮进入 HTML 页面时,它会添加一个新表单,代码如下:
<script>
var counter = 1;
var limit = 10;
function addInput(divName){
if (counter == limit) {
alert("Max number of forms, " + counter );
}
else
{
var newdiv = document.createElement('div');
newdiv.innerHTML = "<form name='frmMain' action='prelucrare.php' method='POST'><div class='slot' id='dynamicInput' align='center'> Masina " + (counter +1 ) + "<table border='1'><tr><td align='right'><label for='marca'>Marca:</label></td><td colspan='2' align='left'>"
+ "<select id='marc' name='marc'><option selected value=''></option>"
+ "<tr><td align='right'><label for='motorizare1'> Motorizare:</label></td> <td><input type='range' name='motorizare1[]Input' min='0.6' max='5' step='0.1' value=2 id=motor1 oninput='outputUpdate1(value)'></td><td><output for=motorizare1 id=moto1>2</output></td></tr>"
+ "</div></form>"
;
}
document.getElementById(divName).appendChild(newdiv);
counter++;
}
</script>
<input type="button" value="Adauga" onClick="addInput('dynamicInput');">
我有下面的脚本可以更改滑块的值。
<script>
function outputUpdate1(mot1) {
document.querySelector('#moto1').innerHTML = mot1;
}
</script>
我的问题是 JS 代码仅更改第一个表单的输入,即使从另一个表单激活滑块也是如此。 简而言之,滑块应该return激活它的表单中的值;不仅在第一种形式中添加。
谢谢!
根据我的评论,问题源于所有输出元素的 id 值相同 (moto1
)。由于您正在跟踪页面上的表单数量(您的 counter
变量),因此您实际上已经获得了使它们唯一所需的所有变量。您可以使用它代替当前输出 HTML:
"<input type='range' name='motorizare1[]Input' min='0.6' max='5' step='0.1' value=2 id='motor_" + counter + "' oninput='outputUpdate1(value)'/>"
"<output for=motorizare1 id='moto_" + counter + "'>"
您可以更新您的函数以解析出您要更新的输出的正确索引,因为如果您使用上面的 HTML,它们应该是同步的:
function outputUpdate1(mot) {
// Get the counter part of the range element's id
var index = mot.id.split('_')[1];
document.querySelector('#moto_' + index).innerHTML = mot;
}
您可能需要对问题中未提供的代码进行一些调整,但这是使 id 值唯一以及如何在事先不知道确切 id 的情况下访问它们的一种方法。
我有一个脚本,当单击按钮进入 HTML 页面时,它会添加一个新表单,代码如下:
<script>
var counter = 1;
var limit = 10;
function addInput(divName){
if (counter == limit) {
alert("Max number of forms, " + counter );
}
else
{
var newdiv = document.createElement('div');
newdiv.innerHTML = "<form name='frmMain' action='prelucrare.php' method='POST'><div class='slot' id='dynamicInput' align='center'> Masina " + (counter +1 ) + "<table border='1'><tr><td align='right'><label for='marca'>Marca:</label></td><td colspan='2' align='left'>"
+ "<select id='marc' name='marc'><option selected value=''></option>"
+ "<tr><td align='right'><label for='motorizare1'> Motorizare:</label></td> <td><input type='range' name='motorizare1[]Input' min='0.6' max='5' step='0.1' value=2 id=motor1 oninput='outputUpdate1(value)'></td><td><output for=motorizare1 id=moto1>2</output></td></tr>"
+ "</div></form>"
;
}
document.getElementById(divName).appendChild(newdiv);
counter++;
}
</script>
<input type="button" value="Adauga" onClick="addInput('dynamicInput');">
我有下面的脚本可以更改滑块的值。
<script>
function outputUpdate1(mot1) {
document.querySelector('#moto1').innerHTML = mot1;
}
</script>
我的问题是 JS 代码仅更改第一个表单的输入,即使从另一个表单激活滑块也是如此。 简而言之,滑块应该return激活它的表单中的值;不仅在第一种形式中添加。 谢谢!
根据我的评论,问题源于所有输出元素的 id 值相同 (moto1
)。由于您正在跟踪页面上的表单数量(您的 counter
变量),因此您实际上已经获得了使它们唯一所需的所有变量。您可以使用它代替当前输出 HTML:
"<input type='range' name='motorizare1[]Input' min='0.6' max='5' step='0.1' value=2 id='motor_" + counter + "' oninput='outputUpdate1(value)'/>"
"<output for=motorizare1 id='moto_" + counter + "'>"
您可以更新您的函数以解析出您要更新的输出的正确索引,因为如果您使用上面的 HTML,它们应该是同步的:
function outputUpdate1(mot) {
// Get the counter part of the range element's id
var index = mot.id.split('_')[1];
document.querySelector('#moto_' + index).innerHTML = mot;
}
您可能需要对问题中未提供的代码进行一些调整,但这是使 id 值唯一以及如何在事先不知道确切 id 的情况下访问它们的一种方法。