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/