Javascript 如何在ID包含点的表单中选择输入

Javascript 如何在ID包含点的表单中选择输入,javascript,Javascript,假设我有以下表格: <form id="myForm"> <input id="my.input.blabla"></input> </form> 不起作用。只需对getElementById()进行一次调用即可。: “id”属性的值必须是唯一的,因此没有必要将查找范围限定到页面的特定部分。它不起作用的原因是getElementById()是文档的函数,而不是DOM元素的函数 这些点没有什么不同 id属性(在有效的HTML文档中)应该是唯

假设我有以下表格:

<form id="myForm">
    <input id="my.input.blabla"></input>
</form>

不起作用。

只需对
getElementById()进行一次调用即可。


“id”属性的值必须是唯一的,因此没有必要将查找范围限定到页面的特定部分。

它不起作用的原因是getElementById()是文档的函数,而不是DOM元素的函数

这些点没有什么不同

id属性(在有效的HTML文档中)应该是唯一的,并且没有理由指定父元素(示例中的表单)。 您可以使用:

document.getElementById("my.input.blabla"); 
如果您的HTML文档包含多个具有相同id的元素,并且您无法对其进行更改(不是您的文档,而是创建浏览器扩展等),则可以尝试使用DOM元素中确实存在的以下函数之一:

some_dom_element.getElementsByClassName 

some_dom_element.getElementsByTagName 
您可以尝试以下方法:

// Get the form
var my_form = document.getElementById('myForm');

//Get all input elements in the form
var inputs = my_form.getElementsByTagName('input'); 

for (var i = 0; i< inputs.length ; i++ )
{
    var tmp_input =  inputs[i];

    // Get the element's id and check if it's the one you need
    if (typeof tmp_input.getAttribute !== "undefined")
    {
        var input_id = tmp_input.getAttribute ('id');

            //if(input_id === "the id you are looking for")
            if(input_id === "my.input.blabla")
            {
                /// Found the input element, use it here 
                break;
            }
    }   
}
//获取表单
var my_form=document.getElementById('myForm');
//获取表单中的所有输入元素
var inputs=my_form.getElementsByTagName('input');
对于(变量i=0;i
不管
document.getElementById(“my.input.blabla”)
甚至工作我实际上正在使用JSF+Richfaces,并且在视图中有几个表单。每个表单都有一个名为javax.faces.ViewState的输入类型,我想从其中一个表单中检索它。这就是为什么我想先得到表格。@dukable,请检查我的答案,它可能会在您需要的场景中帮助您described@dukable输入是否在表单中并不重要。如果它有一个“id”值,那么“id”必须是唯一的,JSF或无JSF。如果您的页面在多个元素上以相同的“id”结尾,那么它将被破坏。
some_dom_element.getElementsByClassName 

some_dom_element.getElementsByTagName 
// Get the form
var my_form = document.getElementById('myForm');

//Get all input elements in the form
var inputs = my_form.getElementsByTagName('input'); 

for (var i = 0; i< inputs.length ; i++ )
{
    var tmp_input =  inputs[i];

    // Get the element's id and check if it's the one you need
    if (typeof tmp_input.getAttribute !== "undefined")
    {
        var input_id = tmp_input.getAttribute ('id');

            //if(input_id === "the id you are looking for")
            if(input_id === "my.input.blabla")
            {
                /// Found the input element, use it here 
                break;
            }
    }   
}