2016-08-24 7 views
-3

Ich muss einen Code schreiben Abkürzung die Wörter größer als 10 Buchstaben zu sein wie: localiztion -> l10n. Ich habe JavaScript verwendet, um dies zu tun, aber ein NaN Fehler.Javascript NaN Ausgabe

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Way Too Long Words</title> 
</head> 
<body> 

     <input type="text"> 
     <button>abbreviate</button> 
     <div id="result"></div> 

<script> 

    var word = document.querySelector('input').value.split(''); 

    document.querySelector("button").onclick = function() { 
    "use strict"; 
    var theResult = word[0] + word.slice(1, -1).length + word[word.length - 1]; 

     document.getElementById("result").innerHTML = theResult; 
}; 
</script> 
</body> 
</html> 

Wie dieses Problem überwinden

Antwort

0

Ich sehe zwei große Probleme mit Ihrem Code, wie es steht:

  1. Sie sind zur Zeit nur den Wert von word einmal eingestellt, wenn das Dokument geladen ist . Sie möchten, dass dies jedes Mal geschieht, wenn auf die Schaltfläche geklickt wird.

  2. Sie überprüfen derzeit nicht, dass word länger als 10 Buchstaben ist, und versuchen Sie, theResult unabhängig zu berechnen.

Die Kombination der beiden oben genannten Probleme bedeutet, dass word, sobald die Seite geladen wird auf eine leere Zeichenfolge festgelegt ist, und auf die Schaltfläche klicken führt immer in theResultNaN zu sein.

+0

Ich habe versucht, die js in eine separate Datei zu legen und in der HTML-Datei aufgerufen und enthält darin den Code: var word = document.querySelector ('input') .Wert; document.querySelector ("Schaltfläche"). Onclick = function() { "verwenden Sie strict"; var theResult = Wort [0] + word.slice (1, -1) .length + Wort [word.length - 1]; if (word.length> 10) { document.getElementById ("Ergebnis"). InnerHTML = theResult; } }; –

+1

@MohamedMahmoudElkassas Das Aufteilen des Codes in eine separate Datei ändert nicht die Funktionsweise, ist aber eine gute Angewohnheit, sich für größere Codeabschnitte zu interessieren. Sie haben Problem 2 gelöst, aber die Person, die die Seite verwendet, weiß möglicherweise nicht, warum sie kein Ergebnis sehen kann (das kann oder darf kein Problem für Sie sein, ich weiß es nicht). Sie haben Problem 1 jedoch noch nicht gelöst - die Codezeile, die "Wort" definiert, muss in Ihrer Klickbehandlungsfunktion enthalten sein, andernfalls setzen Sie den Wert von "Wort" nur einmal und nicht jedes Mal, wenn auf die Schaltfläche geklickt wird . – Timespace