2014-06-26 37 views
2

比方说,我有以下形式:如何选择表单中的输入,其ID包含点

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

我将如何选择输入,如果它包含了点?

喜欢的东西

document.getElementById("myForm").getElementById("my.input.blabla"); 

不起作用。

+0

'.'不管'的document.getElementById( “my.input.blabla”) '甚至工作 – Girish

回答

4

所有你需要的是getElementById()单个呼叫:

var inp = document.getElementById("my.input.blabla"); 

的“ID”属性的值必须是唯一的,所以有在划定范围的查找到页面的特定部分是没有意义的。

+0

我实际上使用JSF + Richfaces,并在View中有几个表单。每个表单都有一个名为javax.faces.ViewState的输入类型,我想从其中一个中检索它。这就是为什么我想先获得表格。 – dukable

+0

@dukable,检查我的答案,它可能会帮助你在你描述的场景 –

+0

@dukable无论输入是否在表单中都没有关系。如果它有一个“id”值,那么“id”必须是唯一的,JSF或者没有JSF。如果你的页面在多个元素上以相同的“id”结尾,那么它就会被破坏。 – Pointy

2

它不起作用的原因是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; 
      } 
    } 
} 
相关问题