循环创建未定义的项目

时间:2016-10-03 13:08:59

标签: javascript

这是我的代码:

var instrukceTexty = [
  ["Nadpis", "Text instrukce"],
  ["Nadpis 2", "Text instrukce 2"],
  ["Nadpis 3", "lorem"]
];

function zobrazInstrukci (  ) {
  var obrazovka;

  for ( var i = 0; i < instrukceTexty.length; i += 1 ) {
    obrazovka += '<div><h1>' + instrukceTexty[i][0] + '</h1>';
    obrazovka += '<p>' + instrukceTexty[i][1] + '</p></div>';
  }

  document.write( obrazovka );
}



zobrazInstrukci(instrukceTexty);

如果在第一个div之前运行它,则文本未定义。我找不到原因。

4 个答案:

答案 0 :(得分:6)

因为您要附加到undefined

替换此行

var obrazovka;

var obrazovka = "";

答案 1 :(得分:1)

您初始化变量&#ob; obrazovka&#39;没有价值,所以从技术上讲,它的值是undefined。然后你将html附加到undefined上。

// equivalent to var obrazovka = undefined;
var obrazovka;

一种解决方案是使用默认值初始化此变量,例如

var obrazovka = "";

或者,如果您能够使用ES2015功能,则将其设置为您的功能的默认参数,例如

function zobrazInstrukci (instrukceTexty = [], obrazovka = "" ) {

  for ( var i = 0; i < instrukceTexty.length; i += 1 ) {
    obrazovka += '<div><h1>' + instrukceTexty[i][0] + '</h1>';
    obrazovka += '<p>' + instrukceTexty[i][1] + '</p></div>';
  }

  document.write( obrazovka );
}

答案 2 :(得分:0)

变量obrazovka已声明但未初始化。尝试将未初始化的变量用作字符串将返回字符串'undefined'。

要解决这个问题,只需给它一个字符串值为nothing。 var obrazovka='';并且您的代码应该有效。

答案 3 :(得分:0)

var instrukceTexty = [
  ["Nadpis", "Text instrukce"],
  ["Nadpis 2", "Text instrukce 2"],
  ["Nadpis 3", "lorem"]
];

function zobrazInstrukci (instrukceTexty) {
  var obrazovka='';

  for ( var i = 0; i < instrukceTexty.length; i += 1 ) {
    obrazovka += '<div><h1>' + instrukceTexty[i][0] + '</h1>';
    obrazovka += '<p>' + instrukceTexty[i][1] + '</p></div>';
  }

  document.write( obrazovka );
}
zobrazInstrukci(instrukceTexty);

缺少函数参数,请尝试此代码

相关问题