2014-06-26 41 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; 
      } 
    } 
} 
相關問題