2016-12-29 81 views
-1

我需要在c:foreach中調用javascript函數。請給我一個想法如何打電話。我將循環遍歷foreach中的usertimetrackersummary,並且需要爲每個循環調用javascript函數。從c調用javascript:foreach

現在,每個循環都調用javascript函數,但如果我嘗試在表數據中打印「totalOffHomeHrs」,我會得到空值。 td

<c:forEach items="${userTimeTrackerSummary}" var="userTimeTracker"> 
      <script type="text/javascript"> 
       var totalOffHomeHrs= addTimes('${userTimeTracker.totalWorkhours}','${userTimeTracker.totalWorkHomehours}'); 
      </script> 
      <tr style="font-size:11px;"> 
        <td ><c:out value="${userTimeTracker.employeeID}" /></td> 
        <td>${totalOffHomeHrs}</td> 
      </tr> 
     </c:forEach> 

    javascript function: 
    function addTimes(t0, t1) { 
      return timeFromMins(timeToMins(t0) + timeToMins(t1)); 
     } 
+0

不是[this](http://stackoverflow.com/questions/28559648/how-to-call-javascript-function-from-tag-libs)有幫助嗎? –

+0

@Ashish。我也一樣。由於服務器重新啓動問題,未調用較早的函數。現在函數被調用了。我會更新你的進展。謝謝 – user2057006

+0

我更新了新的代碼。請幫助爲什麼totalOffHomeHrs什麼都不顯示。有沒有其他方法可以達到這個要求? – user2057006

回答

0

最後我能夠達到以下代碼的要求。請建議是否有其他優雅的方式。

<c:forEach items="${userTimeTrackerSummary}" var="userTimeTracker"> 
      <tr style="font-size:11px;"> 
       <td ><c:out value="${userTimeTracker.employeeID}" /></td> 
       <td id="finalWorkHours${userTimeTracker.employeeID}"></td> 
         <script type="text/javascript"> 
          var totalOffHomeHrs= addTimes('${userTimeTracker.totalWorkhours}','${userTimeTracker.totalWorkHomehours}'); 
          document.getElementById('finalWorkHours${userTimeTracker.employeeID}').innerHTML = totalOffHomeHrs; 
         </script> 
       </tr> 
      </c:forEach> 

javascript function: 
function addTimes(t0, t1) { 
     times = []; 
     times1 = t0.split(':'); 
     times2 = t1.split(':'); 

     for (var i = 0; i < 2; i++) { 
     times1[i] = (isNaN(parseInt(times1[i]))) ? 0 : parseInt(times1[i]) 
     times2[i] = (isNaN(parseInt(times2[i]))) ? 0 : parseInt(times2[i]) 
     times[i] = times1[i] + times2[i]; 
     } 

     var minutes = times[1]; 
     var hours = times[0]; 

     if (minutes % 60 === 0) { 
     res = minutes/60; 
     hours += res; 
     minutes = minutes - (60 * res); 
     } 

     return hours + ':' + minutes ; 
}