我已经在h:outputText
中加载了一些信息,但现在我想点击一个按钮并触发一个JS函数,该函数将从outputText中获取该文本。
结构是:
<p:tabView id="tabView">
<p:tab id="tabInvitator" title="Invitator">
<h:form id="formInvitator">
<h:outputText id="inv" value="#{myController.selectedUsersFB}" />
...
但是在JS函数中 document.getElementsById(“tabView:tabInvitator:formInvitator:inv”)不起作用。它重新启动了网络应用程序。
我只想获取数据并在我的JS函数中操作它。
有任何建议吗?
我尝试过BalusC的建议,这是我的尝试:
function test(){
var arr = document.getElementsByName("tabView:tabInvitator:formInvitator:inv");
console.log(arr);
console.log('Arr: '+arr);
console.log('Length: '+arr.length);
第一个日志返回:[], 第二个返回:Arr:[object NodeList], 第一个:长度:0
为什么日志会返回不同的内容?现在,如果假设来自h:outputText的文本,我该如何访问该对象NodeList?
答案 0 :(得分:0)
首先,它是我想要更新的唯一ID,因此,JS调用将是: document.getElementById (...)(而不是复数 - getElementsById < / strong> - )因为我只返回包含值的数据,通常是文本。
按照我的例子,如果我想首先更新outputText,之后,在JS函数中获取该信息我可以连续执行,首先更新字段(这个字段我把它放在任何标签之外) ,并且完成此操作,调用JS函数:
<p:tabView id="tabView">
<p:tab id="tabInvitator" title="Invitator">
<h:form id="formInvitator">
<p:commandButton value="Invite" icon="ui-icon-comment" update=":inv" oncomplete="sendRequestViaMultiFriendSelectorSelected();"/>
</h:form>
</p:tab>
</p:tabView>
<h:outputText id="inv" value="#{myController.selectedUsersFB}" />
和Javascript函数:
function sendRequestViaMultiFriendSelectorSelected() {
var arr = document.getElementById("inv");
console.log(arr.childNodes[0]);
if(arr.childNodes[0]){
console.log(arr.childNodes[0].data);
}
...
}
希望它可以帮到某人;)