Created
October 8, 2012 17:53
-
-
Save davidbauer/3853898 to your computer and use it in GitHub Desktop.
Word counter V2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function countWords() { | |
var wordcount = 0; | |
var text = document.wordcounter.allthosewords.value; | |
var words = text.match(/\w+\W*/g); | |
if (words) { | |
wordcount = words.length; | |
} | |
} | |
function tellCount() { | |
countWords(); | |
if (wordcount === 0) { | |
results.innerHTML = "Hey, champion. Can't you count to zero by yourself? How about pasting some real text." | |
} else if (0 < wordcount && wordcount < 500) { | |
results.innerHTML = "Your text consists of <i>" + text.length + " characters</i> and <i>" + wordcount + " words</i>. Sorry, not impressed. <br/><br/> <img src='http://media.tumblr.com/tumblr_m8tmyoMNZA1ruser4.jpg'>"; | |
} else { | |
results.innerHTML = "Your text consists of <i>" + text.length + " characters</i> and <i>" + wordcount + " words</i>. Which is pretty fucking impressive."; | |
} | |
} |
Danke zum Zweiten. Wird beim nächsten Update berücksichtigt :-) Bis dahin ist eine voll funktionsfähige Version hier zu finden: http://labs.davidbauer.ch/wordcounter/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Viel besser. Das Problem hier:
wordcount
ist nur innerhalb der FunktioncountWords()
definiert und gültig - innerhalb vontellCount()
istwordcount
blossundefined
.Theorieexkurs:
a) Jede Funktion stellt einen Geltungsbereich (
scope
) her, zusätzlich zum globalen Geltungsbereich in dem alles immer drin ist. Geltungsbereiche kann man auch verschachteln, durch Funktionen innerhalb von Funktionen. Funktionen haben immer auf den eigenen Geltungsbereich und auf alle "darüber" Zugriff.b) Jede Funktion macht drei Sachen: Argumente entgegennehmen, etwas damit übernehmen, und dann wieder was zurückgeben.
Das gibt uns nun folgende Möglichkeiten:
Wir definieren
wordcount
undlength
ausserhalb der beiden Funktionen, im globalen Geltungsbereich - und greifen einfach auf sie zu. Siehe Theorieexkurs a), da weisst du ja Bescheid eigentlich, gell.Wir nutzen das Wissen aus Theorieexkurs b) und schreiben eine Funktion, die einen Text entgegennimmt, die Berechnungen vornimmt und die Resultate zur Weiterverarbeitung zurückgibt.
Ich wär für 2), vor allem weil man mit den Geltungsbereichen immer grausam aufpassen muss, das ist immer eine fiese Fehlerquelle.
Das würde dann ungefähr so aussehen:
Das ist alles nicht getester Code oder so, offensichtlich, but you know what I mean.