gpt4 book ai didi

javascript - ejs中不能for循环

转载 作者:行者123 更新时间:2023-12-03 08:21:29 25 4
gpt4 key购买 nike

我尝试在 ejs 模板中循环,但意外地不断收到这些错误

在普通的 JavaScript 中

var three = 3;

for(var i = 0; i < 10; i+= 3) {
console.log("i is " + i);
for (var j = i; j < three; j++) {
console.log("j is " + j);
}
three += 3;
}

在 javascript 中它工作得很好。

问题出在ejs中,我尝试了两个版本,但都不起作用

第一次尝试

<% var three = 3;
for(var i=0; i < jobs.length; i+=3) { %>

<div class="row stylish-panel">

<% for (var j = i; j < three; j++) { %>

<div class="col-md-4">
<h4><%= jobs[j].title %></h4>

<div>
<img src="http://lorempixel.com/200/200/abstract/1/" alt="Texto Alternativo" class="img-circle img-thumbnail">
</div>
</div>
<% } three += 3;%>
</div>
<% } %>

第二次尝试

<% for(var i=0, three=3; i < jobs.length; i+=3, three+=3)  { %>

<div class="row stylish-panel">

<% for (var j = i; j < three; j++) { %>

<div class="col-md-4">
<h4><%= jobs[j].title %></h4>
<div>
<img src="http://lorempixel.com/200/200/abstract/1/" alt="Texto Alternativo" class="img-circle img-thumbnail">
</div>
</div>
<% } %>
</div>
<% } %>

它一直告诉我Cannot read property 'title' of undefined ,但如果我改变 j < threej < 10 ,效果很好

最佳答案

在您的原始代码中,j也超出了 10 的范围。在输出的最后 4 行中,您得到:

i is 9
j is 9
j is 10
j is 11

最后两行是问题所在。这可以在您的原始代码或您所说的“正常”代码中轻松解决:

var three = 3;

for (var i = 0; i < 10; i += 3) {
console.log("i is " + i);
for (var j = i; j < three && j < 10; j++) {
console.log("j is " + j);
}
three += 3;
}

请注意,我添加了 && j < 10 。在第二次尝试中将其修改为:

for (var i = 0, three = 3; i < 10; i += 3, three += 3) {
console.log("i is " + i);
for (var j = i; j < three && j < 10; j++) {
console.log("j is " + j);
}
}

但进一步检查显示变量 three甚至不需要,你可以使用这个:

for (var i = 0; i < 10; i += 3) {
console.log("i is " + i);
for (var j = i; j < i + 3 && j < 10; j++) {
console.log("j is " + j);
}
}

仍然工作相同。然后尝试将其重新应用到最终代码中:

<% for (var i = 0; i < jobs.length; i += 3)  { %>
<div class="row stylish-panel">
<% for (var j = i; j < i + 3 && j < jobs.length; j++) { %>
<div class="col-md-4">
<h4><%= jobs[j].title %></h4>
<div>
<img
src="http://lorempixel.com/200/200/abstract/1/"
alt="Texto Alternativo"
class="img-circle ing-thumbnail"
/>
</div>
</div>
<% } %>
</div>
<% } %>

因此,显然您有一个解决方案,可以将内容排列在 3 列中,以满足所需的行数。

关于javascript - ejs中不能for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33733254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com