2017-09-26 60 views
2

在帶有Apache Trinidad的JSF 1.1項目中,我需要創建幾個動態h:commandLink,並且它們需要由JS訪問以便在加載時單擊。如何從c:forEach設置id到id h:commandLink以便被JS接受?

我有這是JS:

var cardsSize = window.document.getElementById("miForm:cardsSize").value; 
    for(var i = 0; i <= cardsSize; i++){  
     setTimeout(function(){ 
      var buttonCard = window.document.getElementById("miForm:buttonCard_"+i); 
      buttonCard.click(); 
     }, 1000); 
    } 

而我不得不以.jsp是:

<c:forEach var = "i" begin="0" varStatus="index" end="#{pageFlowScope.cardsSize}"> 
    <h:commandLink id="buttonCard_#{index.index}" 
     style="display:none" 
     action="#{confirmBacking.generateDocument}" 
     onclick="document.forms['miForm'].target='_blank';"> 
      <f:setPropertyActionListener target="#{confirmBacking.indexCard}" value="#{index}" /> 
    </h:commandLink> 
</c:forEach> 

的問題是,當我創建的commandLink與C:的forEach,使用動態ID結束於根據標記文件中的TLD或屬性指令,屬性「[id]」不接受任何表達式

其他解決方案r c:forEach或ui:重複創建具有不同參數的幾個commandLink意味着沒有和id,但是我需要id,因爲據我所知,JS沒有其他方式來訪問這些對象。

+0

如果您使用的用戶界面:再說一遍,你會自動獲得一個ID與索引後綴到它... – Kukeltje

+0

我怎麼能知道該ID爲了從JavaScript訪問它? –

+0

想想這一切都是HTML ...你如何閱讀在JavaScript的HTML元素的屬性?非常通用和'可以googleable'的問題 – Kukeltje

回答

0

您可以使用一個CSS類選擇,而不是:

<h:commandLink styleClass="buttonCard_#{index.index}" 

並得到每個按鈕:

document.getElementsByClassName("buttonCard_"+i) 
+0

也許這對我沒有用處,因爲c:forEach的「結束」標籤既不接受EL表達式,也是有效的解決方案。 –