2015-11-20 57 views
1
目標的另一元素

我的JDeveloper版本11.1.1.9.0如何通過JavaScript

我知道通過clientListener標籤定位的元素。但是這隻會給我提及它所宣佈的元素。如果我想根據jDeveloper中聲明的ID定位頁面上的其他元素,該怎麼辦?例如:

<af:inputText label="Label 1" clientComponent="true" id="it15"> // what's declared in jDeveloper 

這使得成HTML爲:

<input type="text" class="x25" name="r1:0:it15" id="r1:0:it15::content"> 

注意如何it15被轉換成r1:0:it15。這樣做以後出現故障在獲得該元素的引用:

document.getElementById("it15"); // returns null 
AdfPage.PAGE.findComponent("it15"); // returns undefined 

這使我以下的問題:

  1. 爲什麼ID的變化時,HTML獲取呈現?

  2. 如果它的ID被一個隨機的 字符串預先編碼,我將如何定位該元素?

  3. 有沒有辦法獲取該隨機字符串,而不是使用控件ID對其進行硬編碼 ?

+0

我不知道如果這有助於但我已經遇到了類似的問題,與ado.net有是一種添加代碼片段來獲取客戶端ID的方法。 – Rajesh

+0

你的輸入文本是一個叫做r1的表單,它看起來像你正在創建多個inputTexts,基於0通過重複或類似的東西。 Jsf將您的字段ID轉換爲獨特的東西,以便找到它。 – klog

+0

這很有道理。是的,我在表格中有更多的文本框。但是表單ID是'f1',它的第一個孩子的ID是'r1' – asprin

回答

1

,如果你只是一個直DOM堅持你可以使用一個查詢選擇:

document.querySelector('[id$=it15]') 
+0

我剛測試過它。它返回的是它的父項的引用,即'tr',但不是元素本身 – asprin

+0

哦,我明白了。我正在進行最初的修訂。我最初並沒有意識到有更多的內容被添加到id中(我對你使用的框架並不熟悉,但是聽起來你可能會接近AdfPage.PAGE.findComponent。你可能需要使用父母ID? –

+0

那麼,你使用'querySelector'將我放在正確的路徑中,所以謝謝你,但是我希望能得到推薦的方法,Upvoted。 – asprin