2016-06-08 16 views
1

Mein Programm muss die String-Prototyp-Eigenschaft verwenden, obwohl dies unnötig ist. Immer wenn der Submit-Button angeklickt wird, entsteht ein Haufen undefined. Innerhalb der Funktion show_alphabet habe ich eine Variable namens "str", eine Zeichenfolge der Buchstaben des Alphabets in Großbuchstaben.JavaScript-Code zeigt undefined an, wenn das Programm ausgeführt wird

Innerhalb der Funktion show_alphabet habe ich den Code zur Verwendung der Prototypeigenschaft des String-Objekts, um eine Methode namens "sendArray" hinzuzufügen und diese (sendArray) eine Funktion zuzuweisen, die die split() -Methode zurückgibt. Die split() -Methode teilt die alphabetische Zeichenfolge auf.

Ich versuche, die Buchstaben im "str" ​​als ein Array mit Punkt Doppelpunkt gefolgt von jedem Buchstaben anzuzeigen und jeden Buchstaben in einer separaten Zeile zu platzieren. Zum Beispiel: A: B: C: ...

Obwohl ich, dass der String Eigenschaft prototype realisieren nicht verwendet werden muss, sagen die Richtlinien für meine Aufgabe sie verwendet werden müssen. Hier sind die relevanten Teile meines Codes. Diese

<form> 
<button type = "button" onclick = show_alphabet()>submit</button> 
</form> 
<script type "text/javascript"> 
function show_alphabet() { 
var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
String.prototype.sendArray = function() { 
    return this.split(""); 
} 
var arr = str.sendArray 
for (i = 0; i<str.length- 1; i++) { 
    str.split(":<br />"); 
    document.write(arr[i]); 
    } 
} 

Antwort

0

: var arr = str.sendArray

Sollte sein: var arr = str.sendArray()

Ansonsten zuweisen Sie die Funktion arr und nicht das Funktionsergebnis.

Beispiel:

var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
 
String.prototype.sendArray = function() { 
 
    return this.split(""); 
 
} 
 
var arr = str.sendArray(); 
 
var arrLength = arr.length; // length of the array should be calculated before the loop, or it will be calculated on every interaction. 
 
for (i = 0; i<arrLength; i++) { 
 
    arr[i]+=":<br />" 
 
    console.log(arr[i]); 
 
}

+0

Ja, aber jetzt zeigt es nur die Variable str, und die for-Schleife wurde nicht ausgeführt –

+0

Führen Sie den Code, den ich hinzugefügt habe, und weisen Sie darauf hin, was nicht Ihren Anforderungen entspricht. –

+0

Es funktioniert jetzt gut ... danke! –

0

Ändern Sie den Teil des Codes

var arr = str.sendArray 

zu

var arr = str.sendArray(); 

so th Bei Ihnen wird tatsächlich der zurückgegebene Wert eines Funktionsaufrufs zugewiesen, nicht die Funktion selbst.

Verwandte Themen