javascript函数的两个id

时间:2010-11-15 22:37:57

标签: javascript

我有一个像这样的javascript函数:

function change_one()
{
var one = document.getElementById("one").value;

document.getElementById("tag").value=one;
}

它有效,直到有两个元素具有相同的id。

我正在使用php从mysql中获取内容,当它循环播放时,它会回显具有相同id值的输入标记。

如何将此javascript代码应用于id等于“one”的所有输入标记?

3 个答案:

答案 0 :(得分:6)

"它有效,直到有两个元素具有相同的id。"

这完全无效。最好的解决方案是更改PHP代码以使用类或其他方式来区分。您可能会发现使用JavaScript库查找与该类匹配的元素会很有帮助。

编辑:使用jQuery,tagone类:

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”来修复问题的核心,但如果由于某种原因它不是一个选项,请使用上面的代码。