2016-12-29 9 views
-1

私はc:foreach内でjavascript関数を呼び出す必要があります。私に電話をかける方法を教えてください。 foreach内でusertimetrackersummaryをループし、すべてのループでjavascript関数を呼び出す必要があります。c:foreachからjavascriptを呼び出す

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 ; 
} 
関連する問題