【发布时间】:2015-07-12 13:22:02
【问题描述】:
我有一个脚本,当一个按钮被点击到一个 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 代码只更改第一个表单的输入,即使滑块是从另一个表单激活的。 简而言之,滑块应该以激活它的形式返回值;不仅在第一种形式中添加。 谢谢!
【问题讨论】:
-
看起来您在每个滑块输出上硬编码了 ID
moto1:<output for=motorizare1 id=moto1>。 id 必须是唯一的,否则您的选择器每次都会找到具有该 id 的第一个元素。在您的情况下,第一个moto1id 在您生成的第一个表单中 -
谢谢!是否有解决方案可以在每次显示新表单时生成不同的 ID?
-
Math.random().toString(36).substring(10)。我是从 Stack Overflow 上的另一个问题中得到的。您需要根据浏览器调整第二个数字(Chrome 产生 6-8 个字母/数字,IE 2-4 等)
标签: javascript html forms function slider