javascript - Node js+express+ejs。无法读取未定义的属性 'option0'

标签 javascript html node.js express ejs

app.js

var options = { option0: 11, option1: 'option1', option2: 'option2', option3: 'option3', option4: 'option4', option5: 'option5', option6: 'option6', option7: 'option7', option8: 'option8', option9: 'option9', option10: 'option10', }

res.render('main', {opt : options});

main.ejs

<select class="form-control" name="selected" required>

    <% for (let i = 1; i < opt.options.option0; i++) { %>
        <% optionName = 'option' + i %>
        <option value="<%= i %>"><%= opt.options[optionName] %></option>
    <% } %>

</select>

错误:无法读取未定义的属性“option0”。

最佳答案

您已将 options 作为属性 opt 的引用对象传递。因此 opt 现在将指向 { option0: 11, option1: 'option1' , ...} 并且你的渲染函数变为

res.render('main', {opt : { option0: 11, option1: 'option1', ...}});

因此,当您尝试访问 opt.options.option0 时,opt.options 变为未定义并抛出错误

因此你应该使用 `

<% for (let i in opt) { %>
    <% optionName = 'option' + i %>
    <option value="<%= i %>"><%= opt[i] %></option>
<% } %>

`

关于javascript - Node js+express+ejs。无法读取未定义的属性 'option0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408725/

相关文章:

javascript - Node.js Express 强制客户端跳过缓存(刷新)

javascript - JS中如何使用流

javascript - 我在 nginx 中安装了一个 SSL 证书,但在浏览器中写入 url 告诉我 : ERR_CONNECTION_REFUSED

javascript - 对于表单中的非提交按钮,使用 ActionLink 而不是纯 JS

jquery - 固定和可变列宽(表格或 float )?

javascript - html5 - 使用格式化占位符进行科学输入

php - 如何使用PHP、MYSQL等语言创建考勤记录接口(interface)?

javascript - 使用 COM + IE 自动化进行 JavaScript 回发后保存文本文件

javascript - 为用户触发推送客户端事件

javascript - React 上下文 useReducer 未正确更新