Javascript for循环的第一个值未定义
我正在从头制作一个JavaScript表。我试图从一个数组中打印出一系列值——这些值可能是表头,但对于这个问题,我将它们作为段落 应该有四个值,但最后会打印五个值。第一个值显示为“未定义”,但其他四个值按预期打印。代码如下:Javascript for循环的第一个值未定义,javascript,html,Javascript,Html,我正在从头制作一个JavaScript表。我试图从一个数组中打印出一系列值——这些值可能是表头,但对于这个问题,我将它们作为段落 应该有四个值,但最后会打印五个值。第一个值显示为“未定义”,但其他四个值按预期打印。代码如下: <div id="test"></div> <script> var headArray = ["Artist", "Album", "Year", "Genre"]; var tableHead = function() {
<div id="test"></div>
<script>
var headArray = ["Artist", "Album", "Year", "Genre"];
var tableHead = function() {
var str;
for (var i = 0; i < headArray.length; i++) {
str == "";
str += '<p>';
str += headArray[i];
str += '</p>';
console.log(str);
}
return str;
}
var x = document.getElementById('test');
x.innerHTML = tableHead();
</script>
var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str;
对于(变量i=0;i';
console.log(str);
}
返回str;
}
var x=document.getElementById('test');
x、 innerHTML=tableHead();
运行HTML时,文档显示:未定义的艺术家专辑年流派
console.log显示:
"undefined<p>Artist</p>"
"undefined<p>Artist</p><p>Album</p>"
"undefined<p>Artist</p><p>Album</p><p>Year</p>"
"undefined<p>Artist</p><p>Album</p><p>Year</p><p>Genre</p>"
“未定义的艺术家”
“未定义的艺术家专辑”
“未定义的艺术家专辑年份”
“未定义的艺术家专辑年份流派”
如何防止和/或删除DOM中打印的未定义值?请记住,这只是一个更大项目的第一部分(毕竟我正在构建一个表)。javascript需要一些值,即使是空的
var str="";
javascript需要一些值,即使是空的
var str="";
改变
到
并在循环外部初始化变量str
var str="";
改变
到
并在循环外部初始化变量str
var str="";
您需要在循环外声明
str
,否则它将继续被重写(以及将=
更改为=
:
var tableHead = function() {
var str = "";
for (var i = 0; i < headArray.length; i++) {
str += '<p>';
str += headArray[i];
str += '</p>';
}
return str;
}
var tableHead=function(){
var str=“”;
对于(变量i=0;i';
}
返回str;
}
您需要在循环外声明
str
,否则它将继续被重写(以及将=
更改为=
:
var tableHead = function() {
var str = "";
for (var i = 0; i < headArray.length; i++) {
str += '<p>';
str += headArray[i];
str += '</p>';
}
return str;
}
var tableHead=function(){
var str=“”;
对于(变量i=0;i';
}
返回str;
}
在console.log()中出现“未定义”的原因是您从未初始化过str
。在for
循环的第一行中,您有str==“”
。这是将str
的值与空字符串的比较。由于str
未初始化,因此返回值为未定义
您似乎正在尝试初始化变量,但这应该在for循环之外完成。如果您从str==”
更改为str=“”
并查看您的
运行此代码后,您将只看到上次迭代的结果。这是因为您每次都将str
设置为一个新字符串
这就是您需要做的。使用此代码,您的console.log也将始终返回以前的迭代。否则,您的最终结果表将只有最后一个标题单元格:
var headArray = ["Artist", "Album", "Year", "Genre"];
var tableHead = function() {
var str = '';
for (var i = 0; i < headArray.length; i++) {
str += '<p>';
str += headArray[i];
str += '</p>';
console.log(str);
}
return str;
}
var x = document.getElementById('test');
x.innerHTML = tableHead();
var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str='';
对于(变量i=0;i';
console.log(str);
}
返回str;
}
var x=document.getElementById('test');
x、 innerHTML=tableHead();
在console.log()中出现“未定义”的原因是您从未初始化过str
。在for
循环的第一行中,您有str==“”
。这是将str
的值与空字符串的比较。由于str
未初始化,因此返回值为未定义
您似乎正在尝试初始化变量,但这应该在for循环之外完成。如果您从str==”
更改为str=“”
并查看您的
运行此代码后,您将只看到上次迭代的结果。这是因为您每次都将str
设置为一个新字符串
这就是您需要做的。使用此代码,您的console.log也将始终返回以前的迭代。否则,您的最终结果表将只有最后一个标题单元格:
var headArray = ["Artist", "Album", "Year", "Genre"];
var tableHead = function() {
var str = '';
for (var i = 0; i < headArray.length; i++) {
str += '<p>';
str += headArray[i];
str += '</p>';
console.log(str);
}
return str;
}
var x = document.getElementById('test');
x.innerHTML = tableHead();
var headArray=[“艺术家”、“专辑”、“年份”、“流派”];
var tableHead=函数(){
var-str='';
对于(变量i=0;i';
console.log(str);
}
返回str;
}
var x=document.getElementById('test');
x、 innerHTML=tableHead();
str==”;而不是str=“”;在loopstr==”;而不是str=“”外部初始化str;在循环外部初始化str,并将其放在
for
循环的之前。由于var str;
而未定义它,而不是因为一行返回false
且未更改相关变量的代码。并将其放在
for循环的之前。由于var str;
而未定义它,而不是因为一行变量返回false
且不更改所讨论的变量的代码。我10分钟前就明白了这一点,但我没有删除此问题,因为我确信其他人会遇到此问题。感谢您的精彩回答!我10分钟前就明白了这一点,但我没有删除此问题,因为我确信有人会遇到此问题其他人会有这个问题。谢谢你的好答案!我10分钟前就知道了,但我没有删除这个问题,因为我相信其他人也会有这个问题。谢谢你的好答案!不客气。谢谢你为其他人着想!我10分钟前就知道了,但我没有删除回答这个问题是因为我相信其他人会有这个问题。谢谢你