2015-11-20 58 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