在Javascript中获取h:outputText

时间:2013-07-02 11:00:51

标签: javascript html ajax jsf

我已经在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?

解决方案我的答案

1 个答案:

答案 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);
          }
          ...
}

希望它可以帮到某人;)