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'。
答案 0 :(得分:1)
您已将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>
<% } %>
`