2017-02-17 10 views
2

Also habe ich eine Funktion in einer JS-Datei, die ich auf einer HTML-Seite verlinkt sind, dann ist dies meine Funktion:Warum bekomme ich einen undefinierten?

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; 
} 

und dann auf meiner Seite die Funktion Ergebnis zu zeigen, erstelle ich eine andere Funktion, die wie das geht

(function(){ 
    var aLesDiv = document.querySelectorAll("#global div"); 
    aLesDiv[0].innerHTML = produitListe1(2,5,6,7,8); 
})(); 

Wenn ich laden Sie die Seite, die ich auf differents meinen String bekommen li's..but ich einen zufälligen undefiniert Anruf an der Spitze zu kommen, warum?

+1

' "25678" .split ('')' gibt Ihnen das gleiche Ergebnis wie ' "25678" .split()' –

+0

Versuchen Sie, 'x = nicht definiert + "foo"; 'und sehen, was der Wert von' x' ist. – Barmar

Antwort

2
  1. Was ist der Sinn des Arguments ist x, wenn Sie es innerhalb der Funktion sind rediclaring.
  2. Die Art, wie Sie die Funktion aufrufen, denke ich, was Sie versuchen, ist das arguments Objekt der Funktion zu verwenden.

Diese Versuchen:

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 ist eine lokale Variable innerhalb jeder Funktion definiert, es ist ein Array-ähnliches Objekt, das alle Parameter an die Funktion übergeben enthält, wenn es aufgerufen wurde.

function foo() { 
 
    for(var i = 0; i < arguments.length; i++) 
 
    console.log("Parameter #" + (i+1) + ": " + arguments[i]); 
 
} 
 

 

 
foo(1, "R2D2", 13.56, true);

+0

Das Argumente-Objekt ist eigentlich viel bequemer! Vielen Dank! –

1

Da das erste Mal Ihre for-Schleife ausgeführt wird, hat sResultat noch nicht einen Wert (und ist daher nicht definiert) zugeordnet ist, und Sie zuweisen sie selbst (undefined) + ("<ul>" + "<li>" + x[i] + "</li>" + "</ul>")

Versuchen sResultat als leer initialisiert string (var sResultat = "";) statt nur var sResultat;

0

Sie sollten sResultat mit einem leeren String initialisieren.

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>

Verwandte Themen