我有一个带有html表的表单。 我的表是:
<table>
<tr>
<td>
<input type="text" name="password[]"/>
</td>
<td>
<input type="radio" value="1" onchange="generatePassword()"/>Short<br />
<input type="radio" value="2" onchange="generatePassword()"/>Medium<br />
<input type="radio" value="3" onchange="generatePassword()" />Long
</td>
<tr>
</table>
在我的代码中,底部有一个按钮,当单击它时,它会克隆表格行。所以,我不知道我的表中的行数或密码字段数。因为克隆行,我无法给我的密码字段id。所以,我无法决定如何到达没有id的文本框。但我需要在密码字段中显示我生成的密码。
答案 0 :(得分:1)
使用.getElementsByName
代替id:
document.getElementsByName('password[]')[0].value="anyvalue";
使用.getElementsByTagName
document.getElementsByTagName('input')[0].value="anyvalue";
答案 1 :(得分:1)
你能做什么。你可以在generatePassword
找到一个输入字段,如下所示:
function generatePassword(inp) {
var textbox = inp.parentNode.parentNode.cells[0].getElementsByTagName('input')[0];
textbox.value = 'password ' + inp.value;
}
您还可以稍微更改标记。将name
属性添加到单选按钮,并使用this
引用当前输入:
<input type="radio" name="generate" onchange="generatePassword(this)" value="1" />
答案 2 :(得分:1)
您可以使用Classes而不是ID。
HTML
<input type="text" class="myPassword" value="test" name="password[]" />
<input type="text" class="myPassword" value="test" name="password[]" />
<input type="text" class="myPassword" value="test" name="password[]" />
JS
var passwords = document.getElementsByClassName('myPassword') || document.querySelectorAll('myPassword'); //querySelectorAll for IE <= 8
for (var i = 0; i < passwords.length; i++) {
console.log(passwords[i].value);
}