Javascript 节点js+express+ejs。无法读取未定义的属性“option0”

Javascript 节点js+express+ejs。无法读取未定义的属性“option0”,javascript,html,node.js,express,ejs,Javascript,Html,Node.js,Express,Ejs,app.js main.ejs var options = { option0: 11, option1: 'option1', option2: 'option2', option3: 'option3', option4: 'option4', option5: 'option5', option6: 'option6', option7: 'option7', option8: 'option8', option9: 'option9', option10: 'option10', }

app.js

main.ejs

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});
错误:无法读取未定义的属性“option0”。

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

res.render'main',{opt:{option0:11,option1:'option1',…}

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

因此,您应该使用 `

`

opt是呈现页面时的选项,因此opt.options尝试在opt中查找不存在的选项。opt.option0本身就可以,也可以选择[optionName]。
<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>
<% for (let i in opt) { %>
    <% optionName = 'option' + i %>
    <option value="<%= i %>"><%= opt[i] %></option>
<% } %>