ChartJS 如何在ejs脚本标记中使用for循环

o4hqfura  于 2023-01-05  发布在  Chart.js
关注(0)|答案(3)|浏览(159)

我尝试用chart.js绘制图表。
为了获取数据,我尝试使用ejs标记
例如,在ejs中我像这样输入html,它工作得很好。

<p>date: <%= today %></p>
  <p>temperature: <%= data[data.length-1].temperature %>℃</p>

  <h1>5days average temperature</h1>

  <ul>
    <% for(var i = 0; i < 5; i++) {(function (j) {%>
      <li><%= dateList[j] %>%></li>
      <ul><li><%= avgLocTmpList[i] %></li></ul>
    <% })(i);} %>
</ul>

但是当我使用chart.js时,我必须在里面使用这样的ejs标记。

<script>
        var temper0 = '<%= data[0].temperature%>';
        tempList.push(temper0);
        var temper1 = '<%= data[1].temperature%>';
        tempList.push(temper1);
        var temper2 = '<%= data[2].temperature%>';
        tempList.push(temper2);
</script>

我可以得到数据[0].温度以及内部标记。
但是,我希望在里面使用for循环。例如

<% for(var i = 0; i < 5; i++) {
<%= data[i].temperature %>
<% }%>

但是我不能处理这个。有没有办法处理这个for循环??
先谢了。

rryofs0p

rryofs0p1#

在一个类似的情况下,我在脚本标签中使用了这个方法,并且成功了!所以尝试下面的方法并检查它是否有效。

<script type="text/javascript">
   <% data.forEach(function (d) { %>
       console.log("<%= d %>"); // or anything you want to do.    
   <% }) %>
 </script>

另外,你下面的循环代码中有一个错误。注意打开和关闭ejs标记。在第一行中你忘记关闭ejs标记。

<% for(var i = 0; i < 5; i++) {
<%= data[i].temperature %>
<% }%>

使用这个:<% for(var i = 0; i < 5; i++) { %>

svgewumm

svgewumm2#

我尝试从我的数据库中获取属性图像的方法是:

<script>
     let data= JSON.parse('<%-JSON.stringify(property)%>')
     let dataArray= [];
              for (var i = 0; i < data.length; i++) {
                let image = data[i].image_name
                dataArray.push({
                  id: i, src: '/uploads/properties/' + image
                })
    
              }
</script>
jmo0nnb3

jmo0nnb33#

我有一个MongoDB数据库,我想总结所有的项目的价格,客户添加到他的购物车,我需要你问的答案,所以我尝试了上面的例子,即使他们的工作很好,它给红色下划线的代码。所以你必须引用代码,如果你要使用来自服务器端的变量。这样你就不会't得到任何红色下划线的代码,它看起来非常好。

<script>
    let prices = []
    let pricex;
    let sum = 0;
 " <% for (let i = 0; i < products.userCart.length; i++) { %>"

        pricex = "<%= (products.userCart[i].quantity *  
        products.userCart[i].price) %>";

        prices.push(pricex);
    
   " <%    } %>"

    for (let i = 0; i < prices.length; i++) {
            sum = sum + parseInt(prices[i]);
        
    }

    console.log(sum);
</script>

相关问题