javascript forEach输出中未定义的字符串

时间:2014-01-24 09:00:27

标签: javascript arrays foreach

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。谢谢你提前帮忙!!

4 个答案:

答案 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>';