所以我在一个链接到html页面的.js文件中创建了一个函数,这是我的函数:
function produitListe1(x){
var x = new String("25678");
var a = x.split(", ");
var sResultat;
for(var i=0; i < x.length;i++){
sResultat = sResultat + ("<ul>" + "<li>" + x[i] + "</li>" + "</ul>");
}
return sResultat;
}
然后在我的页面上显示函数结果我创建了另一个像这样的函数
(function (){
var aLesDiv = document.querySelectorAll("#global div");
aLesDiv[0].innerHTML = produitListe1(2,5,6,7,8);
}) ();
当我加载页面时,我会在不同的地方收到我的字符串。但是我在顶部收到一个随机的未定义调用,为什么?
答案 0 :(得分:2)
x
的重点是什么。试试这个:
function produitListe1(){
var sResultat = ""; // this should be initialized
for(var i = 0; i < arguments.length; i++) {
sResultat += "<ul><li>" + arguments[i] + "</li></ul>"; // += is better
}
return sResultat;
}
arguments
是在每个函数内定义的局部变量,它是一个类似于数组的对象,它包含调用函数时传递给函数的所有参数。
function foo() {
for(var i = 0; i < arguments.length; i++)
console.log("Parameter #" + (i+1) + ": " + arguments[i]);
}
foo(1, "R2D2", 13.56, true);
答案 1 :(得分:1)
因为第一次执行for循环时,sResultat
尚未分配值(因此未定义),并且您将其分配给自身(未定义)+ ("<ul>" + "<li>" + x[i] + "</li>" + "</ul>")
尝试将sResultat
初始化为空字符串(var sResultat = "";
),而不仅仅是var sResultat;
答案 2 :(得分:0)
您应该使用空字符串初始化sResultat
。
var sResultat = '';
function produitListe1() {
var sResultat = '';
for (var i = 0; i < arguments.length; i++) {
sResultat = sResultat + ("<ul>" + "<li>" + arguments[i] + "</li>" + "</ul>");
}
return sResultat;
}
(function() {
document.getElementById("out").innerHTML = produitListe1(2, 5, 6, 7, 8);
})();
<div id="out"></div>