关于循环往Table表格中添加数据的问题

场景:n条数据,循环添加到表格中,表格一行有4列,当n/4有余数的时候,余数的几条数据怎么能继续添加在表格里,例如最后一行写有2条数据,剩下2个表格显示空白
写这行代码的时候发现这个问题,大佬帮忙解决下
for (var i = 0; i < Data.retbody.length; i = i + 4) {
$("#info1").append(
"

"
+ "" + Data.retbody[i].ksmc00 + ""
+ "" + Data.retbody[i+1].ksmc00 + ""
+ "" + Data.retbody[i+2].ksmc00 + ""
+ "" + Data.retbody[i+3].ksmc00 + ""
+ "")
}

我这样写,最后一行的数据如果不能满足1行4列,最后一行数据丢失,js报错提示未定义

2个回答

这么做肯定是未定义的,你需要判断当前i的值是否在Data.retbody.length范围之内,你这个明显是超出了数组的长度,怎么能够获得值呢?都数组下标越界了,要么就多做几重循环,分别判断i,i+1,i+2,i+3是否在范围之内,在范围之内才允许继续

weixin_42603240
编程的旭哥哥 已测试成功,请忽略最初的代码
11 个月之前 回复
weixin_42603240
编程的旭哥哥 var length = Data.retbody.length; for (var i = 0; i < length; i = i + 4) { if(i+3<length){ $("#info1").append( "<tr>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 1].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 2].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 3].ksmc00 + "</button></td>" + "</tr>"); } else if(i+2<length){ $("#info1").append( "<tr>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 1].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 2].ksmc00 + "</button></td>" + "</tr>"); } else if(i+1<length){ $("#info1").append( "<tr>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i].ksmc00 + "</button></td>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i + 1].ksmc00 + "</button></td>" + "</tr>"); } else if(i<length){ $("#info1").append( "<tr>" + "<td><button onclick=\"getDoctor(this)\">" + Data.retbody[i].ksmc00 + "</button></td>" + "</tr>"); } }
11 个月之前 回复
weixin_42603240
编程的旭哥哥 回复: 这样写对吗,感觉怪怪的
11 个月之前 回复
weixin_42603240
编程的旭哥哥 $("#info1").append( "<tr">" + "<td><button onclick=\"getTime(this)\">" + Data.retbody[i].ksmc00 + "</button></td>" + "if(i+1<length){+ "<td><button onclick=\"getTime(this)\">" + Data.retbody[i+1].ksmc00 + "</button></td>"}" + "if(i+2<length){+ "<td><button onclick=\"getTime(this)\">" + Data.retbody[i+1].ksmc00 + "</button></td>"}" + "if(i+3<length){+ "<td><button onclick=\"getTime(this)\">" + Data.retbody[i+1].ksmc00 + "</button></td>"}" + "</tr>")
11 个月之前 回复
weixin_42603240
编程的旭哥哥 这个js里面是动态加的,该怎么写判断呢,能写下代码吗
11 个月之前 回复

var length = Data.retbody.length;

for (var i = 0; i < length; i = i + 4) {
if(i+3 $("#info1").append(
""
+ "" + Data.retbody[i].ksmc00 + ""
+ "" + Data.retbody[i + 1].ksmc00 + ""
+ "" + Data.retbody[i + 2].ksmc00 + ""
+ "" + Data.retbody[i + 3].ksmc00 + ""
+ "");
}
else if(i+2 $("#info1").append(
""
+ "" + Data.retbody[i].ksmc00 + ""
+ "" + Data.retbody[i + 1].ksmc00 + ""
+ "" + Data.retbody[i + 2].ksmc00 + ""

+ "");
}
else if(i+1 $("#info1").append(
""
+ "" + Data.retbody[i].ksmc00 + ""
+ "" + Data.retbody[i + 1].ksmc00 + ""

+ "");
}
else if(i $("#info1").append(
""
+ "" + Data.retbody[i].ksmc00 + ""
+ "");
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!