我有一个像这样的javascript函数:
function change_one()
{
var one = document.getElementById("one").value;
document.getElementById("tag").value=one;
}
它有效,直到有两个元素具有相同的id。
我正在使用php从mysql中获取内容,当它循环播放时,它会回显具有相同id值的输入标记。
如何将此javascript代码应用于id等于“one”的所有输入标记?
答案 0 :(得分:6)
"它有效,直到有两个元素具有相同的id。"
这完全无效。最好的解决方案是更改PHP代码以使用类或其他方式来区分。您可能会发现使用JavaScript库查找与该类匹配的元素会很有帮助。
编辑:使用jQuery,tag
和one
类:
function change_one()
{
$(".tag").val($(".one").val());
}
答案 1 :(得分:1)
它正常工作,即使不是很好:)
id
属性用于唯一标识符,因此包含具有相同ID的输入标记的页面无法通过validation。作为解决方法,您可以循环访问document.forms.elements
个集合。
答案 2 :(得分:0)
我同意拥有有效的HTML更好,但生活有时可能是不公平的,有时我们必须打破一些规则来实现某些目标。
所以回答这里的原始问题,这里的代码将“支持”多个具有相同ID的输入并简单地追加它们的值:
var arrInputs = document.getElementsByTagName("input");
var one = "";
for (var i = 0; i < arrInputs.length; i++) {
var oCurInput = arrInputs[i];
if (oCurInput.id == "one")
one += oCurInput.value;
}
document.getElementById("tag").value=one;
同样,如果可能的话,通过使用“class”而不是“id”来修复问题的核心,但如果由于某种原因它不是一个选项,请使用上面的代码。