Javascript JSF ui:include和getElementById

Javascript JSF ui:include和getElementById,javascript,jsf,Javascript,Jsf,我正在编写ui:compositionXHTML文件,以便使用ui:include将其包含在不同的页面中。看起来我无法使用getElementById引用此文件中javascript中的标记,因为标记id可能是在父页面的表单id之前。有解决办法吗 在我发布问题后找到了这个答案。这有帮助 您可以这样做: var elem = document.querySelector( '[id$="-test"]' ); 其中,test是不带前缀的ID,-是前缀分隔符 上述代码将选择“id”属性以“-tes

我正在编写ui:compositionXHTML文件,以便使用ui:include将其包含在不同的页面中。看起来我无法使用getElementById引用此文件中javascript中的标记,因为标记id可能是在父页面的表单id之前。有解决办法吗

在我发布问题后找到了这个答案。这有帮助
您可以这样做:

var elem = document.querySelector( '[id$="-test"]' );
其中,
test
是不带前缀的ID,
-
是前缀分隔符

上述代码将选择“id”属性以
“-test”
结尾的元素(例如

现场演示:

请注意,与属性ends with selector()配对的
querySelector()
执行速度比
getElementById()
慢。您可以执行以下操作:

var elem = document.querySelector( '[id$="-test"]' );
其中,
test
是不带前缀的ID,
-
是前缀分隔符

上述代码将选择“id”属性以
“-test”
结尾的元素(例如

现场演示:

请注意,与属性ends with selector()配对的
querySelector()
执行速度比
getElementById()

慢。如果您碰巧使用并指定
forceId=“true”
,则标记ID将保持不变。例如:

如果您碰巧使用,并指定
forceId=“true”
,则标记ID将保持不变。例如:

将导致一个