var tmu, categories = [['Morning','am'],['Evening','pm']],
days = ['mon', 'tue', 'wen', 'thu', 'fri', 'sat', 'sun'],
fullDay, i;
tmu += '<table>';
categories.forEach(function(ele){
tmu += '<tr id="periodTitle">';
tmu += '<td colspan=7 style="text-align:center;">'+ele[0]+'</td>';
tmu += '</tr>';
for(i = 0; i <= 6; i++){
tmu += '<td id="'+days[i]+'-'+ele[1]+'">x</td>';
}
});
tmu += "</table>";
console.log(tmu);
我正在尝试编写一些代码来循环创建一些表,但是它会在循环的开头添加undefined
文本,我不知道为什么,其他一切都很好。关于如何发生这种情况的任何想法?
fiddle link is here。谢谢你提前帮忙!!
答案 0 :(得分:2)
这将解决它:
var tmu = '';
当您声明变量但不指定值时,tmu将为undefined
,当您执行tmu += '<table>';
时,tmu
将被强制转换为字符串 - 即未定义。
答案 1 :(得分:0)
第一次使用tmu时,请使用简单的作业
tmu = '<table>';
现在您的指示tmu += '<table>'
是tmu = tmu + '<table>'
的快捷方式:
所以,您正在进行字符串连接,并且此赋值右侧的tmu
变量将被计算为字符串,该值必须为undefined
,因为之前没有完成任务。
答案 2 :(得分:0)
将tmu
初始化为字符串,请参阅example
**var tmu=''**, categories = [['Morning','am'],['Evening','pm']],
days = ['mon', 'tue', 'wen', 'thu', 'fri', 'sat', 'sun'],
fullDay, i;
tmu += '<table>';
categories.forEach(function(ele){
tmu += '<tr id="periodTitle">';
tmu += '<td colspan=7 style="text-align:center;">'+ele[0]+'</td>';
tmu += '</tr>';
for(i = 0; i <= 6; i++){
tmu += '<td id="'+days[i]+'-'+ele[1]+'">x</td>';
}
});
tmu += "</table>";
console.log(tmu);
答案 3 :(得分:0)
您需要删除以下规则中的+:
tmu += '<table>';
将规则更改为此,未定义的内容已消失:
tmu = '<table>';