0

我已经在 a 中加载了一些信息,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")不起作用。它重新启动 Web 应用程序。

我只想获取该数据并在我的 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?

我在下面的答案中的解决方案

4

1 回答 1

0

首先,这是我要更新的唯一 ID,因此,JS 调用将是:document.getElementById (...) (而不是复数形式 - getElementsById -),因为我将只返回包含 a 的数据值,通常是文本。

并按照我的示例,如果我想首先更新 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);
          }
          ...
}

希望它可以帮助某人;)

于 2013-07-02T16:00:50.920 回答