javascript - 如何将二维数组从 JavaScript 传递到 ejs 中的脚本标签?

标签 javascript arrays node.js multidimensional-array ejs

我正在尝试将一个二维假值数组从我的项目的 index.js 文件传递​​到 ejs 文件的脚本部分。

index.js

app.get('/nextpage',(req,res)=>{
    var arr = function I have to make a 2d array ;)
    res.render('pages/nextpage.ejs',{
        arr: arr
    });
});

根据其他人相关帖子中的一些堆栈答案,我在我的 ejs 文件中尝试了以下实现:

nextpage.ejs

<script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>

    <div id = "script" arr= "<%=arr%>" ></div>
    <script>

        function renderBlock(){
             var arr = document.getElementById("script").getAttribute('arr');
             console.log(arr.length);
             $("#blockView").empty();
             for (var i=0; i <  arr.length;i++){
                for (var j=0; j <  arr[0].length;i++){
                    $('#blockView').append('<button>'+arr[i][j]+'</button');
                }
             }
         }
         renderBlock();

     </script>

我以为我已经很接近了。我尝试传入 3x3 数组,这就是我得到的:

它不是为二维数组中的每个值呈现一个按钮,而是为字符串中的每个字符呈现一个按钮。我正在寻找的是能够为二维数组的每个条目显示按钮。更具体地说,如何允许 ejs 文件的脚本标记访问文件其余部分可以访问的相同变量?

最佳答案

如果将数据从后端传递到前端,则必须对其进行正确序列化,通常为 JSON:

 "<%=JSON.stringify(arr)%>"
// ->
var arr = JSON.parse( document.getElementById("script").getAttribute('arr'));

但这太丑陋了。为什么不直接用 EJS 生成按钮呢?:

<% for(const sub of arr) { %>
  <% for(const el of sub) { %>
    <button> <%= el %> </button>
  <% } %>
<% } %>

关于javascript - 如何将二维数组从 JavaScript 传递到 ejs 中的脚本标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247832/

相关文章:

javascript - javascript中如何从数组中获取key的值

javascript - 插入 Bootstrap 轮播的 handle ?

javascript - 为什么 Object._proto_ 引用 Function.prototype?

javascript - Phaser JS 走上瓷砖楼梯

javascript - 创建 javascript 弹出窗口的最优雅方法?

javascript - 使用 CoffeeScript 支持设置 Node.js/Geddy 应用程序

javascript - 数组中的任何更改都会更改整个数组吗?

ios - '无效更新 : invalid number of rows in section 0

node.js - azure 的阿尔戈利亚

javascript - Socket.io HTML - 将独特的内容发送到独特的客户的 HTML 页面