0

我正在编写 ui:composition xhtml 文件以使用 ui:include 包含在不同的页面中。看起来我无法使用 getElementById 在此文件中引用来自 javascript 的标签,因为标签 ID 可能会在父页面的表单 ID 前面添加。有解决方法吗?

在我发布问题后找到了这个答案。它有帮助!
使用 JSF 2.0 在命名容器中获取组件 clientId 的完整前缀

4

2 回答 2

2

你可以这样做:

var elem = document.querySelector( '[id$="-test"]' );

其中test是不带前缀的 ID,-是前缀分隔符。

上面的代码将选择“id”属性以"-test"(例如<div id="form1-test">...</div>)结尾的元素。

现场演示:http: //jsfiddle.net/8kyb2/

请注意,querySelector()与 attribute-ends-with 选择器配对的执行速度比getElementById().

于 2012-08-21T20:58:54.420 回答
1

如果您碰巧使用Apache 的 Tomahawk Components并指定forceId="true",则标签 ID 将保持不变。例如:

<t:inputText id="name" forceId="true" value="#{myBean.property}" />

将导致<input type="text" id="name" ... / >.

于 2012-08-22T08:48:58.417 回答