<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Guggat emol Blog&#187; Download für JavaScript wiederkehrender Event mit .htaccess Anpassung</title>
	<atom:link href="http://www.baldenhofer.eu/blog/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.baldenhofer.eu/blog</link>
	<description>Roland bloggt über IT, Programmieren und Linux</description>
	<lastBuildDate>Wed, 08 Sep 2010 11:34:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Download f&#252;r JavaScript wiederkehrender Event mit .htaccess Anpassung</title>
		<link>http://www.baldenhofer.eu/blog/it/download-fuer-javascript-wiederkehrender-event-mit-htaccess-anpassung</link>
		<comments>http://www.baldenhofer.eu/blog/it/download-fuer-javascript-wiederkehrender-event-mit-htaccess-anpassung#comments</comments>
		<pubDate>Sat, 16 Jan 2010 22:08:37 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[eventhandler]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1857</guid>
		<description><![CDATA[Beim Artikel Mit JavaScript einen wiederkehrenden Event erzeugen hat Andy gefragt, ob ich den Beispielcode so aufbereiten kann, dass man ihn herunterladen kann.
Unter Javascript_Download habe ich nun zwei Dateien angelegt, die den Quellcode darstellen.
Ihr k&#246;nnt die Datei mainpage.html einfach anklicken und sehen, wie der Timer alle 10 Sekunden einen Alarm ausgibt.
Nat&#252;rlich k&#246;nnt ihr die Dateien [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> hat Andy gefragt, ob ich den Beispielcode so aufbereiten kann, dass man ihn herunterladen kann.<br />
Unter <a href="http://www.baldenhofer.eu/javascript_download/" class="liinternal">Javascript_Download</a> habe ich nun zwei Dateien angelegt, die den Quellcode darstellen.<br />
Ihr k&#246;nnt die Datei mainpage.html einfach anklicken und sehen, wie der Timer alle 10 Sekunden einen Alarm ausgibt.<br />
Nat&#252;rlich k&#246;nnt ihr die Dateien auch runterladen und euch damit vergn&#252;gen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>.htaccess Anpassung</h3>
<p>Damit die javascript_download Seite browsbar ist, habe ich eine .htaccess eingerichtet in der ich den Befehl <strong>Options +Indexes</strong> eingetragen habe.<br />
Jetzt ist dieses Verzeichnis, und genau nur dieses Verzeichnis, einsehbar.<br />
Diese Option finde ich schick, denn damit kann man sich schnell mal ein Verzeichnis zum Browsen und Liebhaben freischalten.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/eventhandler-im-javascript-mit-dem-html-dokument-verknuepfen" title="Eventhandler im JavaScript mit dem HTML Dokument verkn&#252;pfen (17. April 2009)" class="liinternal">Eventhandler im JavaScript mit dem HTML Dokument verkn&#252;pfen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren" title="Objekte in JavaScript mit JSON deklarieren (26. April 2009)" class="liinternal">Objekte in JavaScript mit JSON deklarieren</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen" title="Modelle von der Oberfl&#228;che trennen (24. April 2009)" class="liinternal">Modelle von der Oberfl&#228;che trennen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/download-fuer-javascript-wiederkehrender-event-mit-htaccess-anpassung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kleine Aufgabe um mit JavaScript Events rumzuspielen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen#comments</comments>
		<pubDate>Thu, 28 May 2009 08:13:23 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1212</guid>
		<description><![CDATA[Dieser Artikel ist Teil 21 von 24 der Artikelserie  Grundlagen  Hier eine kleine Aufgabe:
Du hast eine HTML Seite auf der eine Eingabem&#246;glichkeit (z.B. eine Textarea oder ein Input Field) vorhanden ist.
Fokus setzen
Wenn du die HTML Seite l&#228;dst, wird der Cursor zuerst in dieses Eingabefeld positioniert.
Ausgabe der eingegebenen Zeichen
Wenn du in dem Eingabefeld etwas [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 21 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Hier eine kleine Aufgabe:<br />
Du hast eine HTML Seite auf der eine Eingabem&#246;glichkeit (z.B. eine Textarea oder ein Input Field) vorhanden ist.</p>
<h3>Fokus setzen</h3>
<p>Wenn du die HTML Seite l&#228;dst, wird der Cursor zuerst in dieses Eingabefeld positioniert.</p>
<h3>Ausgabe der eingegebenen Zeichen</h3>
<p>Wenn du in dem Eingabefeld etwas eingibst, dann wird jedes eingegebene Zeichen in einem Ausgabebereich (paragraph oder so&#8230;) erscheinen. Im Startzustand werden die Zeichen einfach wieder so ausgegeben wie sie vom Anwender eingegeben worden sind.</p>
<h3>Sonderfall Text falschrum ausgeben</h3>
<p>Wenn die Checkbox &#8220;Falschrum&#8221; angeklickt wird, dann werden alle eingegebenen Zeichen verkehrt herum in dem Ausgabefeld ausgegeben.</p>
<h3>L&#246;sungsschritte</h3>
<ul>
<li>Schreibe zuerst auf, welche Mittel du zur Umsetzung einsetzten willst.</li>
<li>Beschreibe jede Datei die du erstellen willst.</li>
<li>Beschreibe welche Events du abfangen willst und warum du diese abfangen willst.</li>
<li>Schreibe die einzelnen Funktionen in Pseudocode. Also was muss bei der Initialisierung geschehen? Was wenn eine Taste gedr&#252;ckt wurde?</li>
<li>Programmiere zuerst alles ausser den Sonderfall.</li>
<li>Wenn das klappt programmiere den Sonderfall.</li>
<li>Stelle die Ergebnisse auf das Blog damit andere es auch sehen k&#246;nnen. (Nat&#252;rlich nur, wenn du auf das Blog Zugriff hast wie Jozo zum Beispiel <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</li>
</ul>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen" title="L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen (29. April 2009)" class="liinternal">L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmierung" title="Programmierung (29. Januar 2009)" class="liinternal">Programmierung</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte" title="Objekte (13. M&auml;rz 2009)" class="liinternal">Objekte</a> (2)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Aufgabe Ratespiel um Mengenlehre zu verwenden</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-ratespiel-um-mengenlehre-zu-verwenden</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-ratespiel-um-mengenlehre-zu-verwenden#comments</comments>
		<pubDate>Thu, 07 May 2009 04:18:24 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[Fachinformatiker]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mengenlehre]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=993</guid>
		<description><![CDATA[Dieser Artikel ist Teil 19 von 24 der Artikelserie  Grundlagen  Zu den Grundlagen bei der Ausbildung zum Fachinformatiker geh&#246;rt es dazu sich ein wenig mit der Mengenlehre auszukennen.
Die gro&#223;e Frage ist da nat&#252;rlich &#8220;Wieso soll ich Mengenlehre k&#246;nnen, wenn ich doch nur programmieren will?&#8221;
Und die Antwort darauf ist relativ einfach:
Manchmal braucht man diese [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 19 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Zu den Grundlagen bei der Ausbildung zum Fachinformatiker geh&#246;rt es dazu sich ein wenig mit der Mengenlehre auszukennen.<br />
Die gro&#223;e Frage ist da nat&#252;rlich &#8220;Wieso soll ich Mengenlehre k&#246;nnen, wenn ich doch nur programmieren will?&#8221;<br />
Und die Antwort darauf ist relativ einfach:<br />
Manchmal braucht man diese Grundfertigkeit um ein Programmierproblem zu l&#246;sen.</p>
<h3>Ratespiel</h3>
<p>Lass uns mal ein kleines Ratespiel basteln.<br />
In diesem Ratespiel geht es darum, dass der Computer sich ein paar Zufallszahlen zusammenkratzt und der Spieler diese erraten soll.<br />
Wenn der Spieler alle Zufallszahlen erraten hat, hat er gewonnen.</p>
<h4>Dokumentation</h4>
<p>Lese diese Aufgabe hier komplett durch und schreibe eine Dokumentation die alle ben&#246;tigten Funktionen beinhaltet. Beschreibe zuerst die mathematischen Zusammenh&#228;nge der drei Mengen. Mach dir klar welche Komponenten du nacheinander erstellen musst.<br />
Beispielsweise kann die Highscore Verwaltung unabh&#228;ngig vom Spiel erstellt werden. Du kannst also zuerst das Spiel erstellen und dann den Highscore. Oder anders herum.</p>
<h4>Initialisierung</h4>
<p>Erstelle mit JavaScript die notwendige Oberfl&#228;che.<br />
Diesmal muss der Anwender ein Eingabefeld bekommen, in dem er die jeweilige zu ratendene Zahl eingeben kann. Wenn er dies getan hat, dr&#252;ckt er den &#8220;Rate&#8221; Button und der Rechner kontrolliert, ob diese Zahl mit einer der zu erratenden &#252;bereinstimmt.<br />
Die Obermenge (also alle m&#246;glichen zu ratenden Zahlen) werden in einer Liste dargestellt.<br />
Die bisher verwendeten Zahlen sind eine Teilmenge und werden in einer zweiten Liste dargestellt.<br />
Falls der Anwender richtige Zahlen erraten hat, werden diese in einer dritten Liste dargestellt. Die Schnittmenge der erratenen Zahlen und der falsch geratenen Zahlen ergibt die Menge der Zahlen die der Anwender bisher eingegeben hat.<br />
F&#252;r Meldungen baust du wieder ein id=&#8221;message&#8221; Feld ein.<br />
Als Letztes soll noch eine Ausgabe erfolgen, die angibt wie h&#228;ufig bisher eine Zahl geraten wurde.</p>
<h4>Verwaltung der Obermenge und der bisher verwendeten Zahlen</h4>
<p>Wenn der Anwender eine Zahl verwendet hat, wird diese in der Obermengenliste entfernt. Du musst also eine Funktion schreiben, die kontrolliert ob die geratene Zahl eine Teilmenge der Obermenge ist. Oder anders gesagt, du musst die Schnittmenge der bisher geratenen und der Obermenge durchf&#252;hren.<br />
Falls dem so ist, wird sie aus der Obermengenliste entfernt und kontrolliert ob sie Teil der zu erratenden Untermenge ist.<br />
Falls die verwendete Zahl nicht in der Obermenge vorkommt, muss eine entsprechende Meldung ausgegeben werden. Also &#8220;Diese Zahl ist nicht innerhalb der m&#246;glichen zu erratenden Zahlen enthalten. Entweder hast du die Zahl schon verwendet oder sie liegt au&#223;erhalb des erlaubten Bereichs&#8221;.<br />
Die geratene Zahl wird entweder in der Liste der falsch geratenen Zahlen oder in der Liste der korrekt erratenen Zahlen gef&#252;hrt.</p>
<h4>Z&#228;hlen</h4>
<p>Jedesmal wenn eine Zahl erraten wurde, wird der Spielzugz&#228;hler um eins erh&#246;ht und dargestellt.<br />
Logischerweise hat der Spieler gewonnen, der am wenigsten Spielz&#252;ge ben&#246;tigt hat.</p>
<h4>Highscore Verwaltung</h4>
<p>Wenn der Spieler alle Zahlen erraten hat, wird die aktuelle Highscore Tabelle vom Server geladen und entsprechend angepasst. Das bedeutet, dass du auf dem Server die aktuelle Highscore Liste speichern musst. Diese muss vom Client geladen und manipuliert werden k&#246;nnen. Hier darfst du frei entscheiden ob der Client diese Liste direkt ver&#228;ndert, oder einfach nur das Ergebnis zum Server schickt. Wichtig ist nur, dass der Client am Ende die Top 10 der besten Spieler anzeigt.</p>
<h3>Fazit</h3>
<p>Da wir uns mit Mengenlehre ein wenig auskennen, konnten wir die Verh&#228;ltnisse der einzelnen Mengen (Obermenge und die Teilmengen Ergebnisse und falsch gew&#228;hlte Zahlen) hiermit beschreiben. Wir k&#246;nnen uns die einzelnen Mengen gut vorstellen. Dieses Beispiel zeigt, dass es sich auszahlt ein wenig Mengenlehre verstanden zu haben.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen" title="L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen (29. April 2009)" class="liinternal">L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen" title="Kleine Aufgabe um mit JavaScript Events rumzuspielen (28. Mai 2009)" class="liinternal">Kleine Aufgabe um mit JavaScript Events rumzuspielen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/globale-variablen-in-javascript" title="Globale Variablen in JavaScript (4. April 2009)" class="liinternal">Globale Variablen in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/azubi-ecke/gruende-fuer-verschiedene-fachrichtungen-bei-fachinformatikern" title="Einleitung des IT-Handbuchs f&#252;r Fachinformatiker (11. Mai 2009)" class="liinternal">Einleitung des IT-Handbuchs f&#252;r Fachinformatiker</a> (3)</li>
	<li><a href="http://www.baldenhofer.eu/blog/unterricht/warum-gibt-es-verschiedene-fachrichtungen" title="Warum gibt es verschiedene Fachrichtungen? (4. Mai 2009)" class="liinternal">Warum gibt es verschiedene Fachrichtungen?</a> (4)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-ratespiel-um-mengenlehre-zu-verwenden/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</title>
		<link>http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen</link>
		<comments>http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen#comments</comments>
		<pubDate>Wed, 29 Apr 2009 14:59:30 +0000</pubDate>
		<dc:creator>Jozo</dc:creator>
				<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=961</guid>
		<description><![CDATA[Dieser Artikel ist Teil 15 von 24 der Artikelserie  Grundlagen  Hier ein L&#246;sungsvorschlag f&#252;r die Aufgabe aus dem Artikel Eingabefelder w&#228;hrend der Eingabe pr&#252;fen.
Um diese Anwendung zu realisieren reicht HTML und JavaScript aus. Ausserdem arbeiten wir auf Client -Seite, und deswegen passt JavaScript doch eigentlich auch ganz gut.
F&#252;r die Realisierung habe ich mal [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 15 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Hier ein L&#246;sungsvorschlag f&#252;r die Aufgabe aus dem Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-eingabefelder-waehrend-der-eingabe-ueberpruefen" class="liinternal">Eingabefelder w&#228;hrend der Eingabe pr&#252;fen</a>.</p>
<p>Um diese Anwendung zu realisieren reicht HTML und JavaScript aus. Ausserdem arbeiten wir auf Client -Seite, und deswegen passt JavaScript doch eigentlich auch ganz gut.</p>
<p>F&#252;r die Realisierung habe ich mal eine &#8220;eingabe.html&#8221; Seite erstellt welche wie erw&#252;nscht ein einfaches Eingabefeld beinhaltet und wie folgt aussieht.</p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;de&quot; lang=&quot;de&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;title&gt;Eingabeoberfl&#228;che&lt;/title&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;script type=&quot;text/javascript&quot; src=&quot;initialize.js&quot;&gt;&lt;/script&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;body onload=&quot;initialize();&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;p id=&quot;message&quot;&gt;Bitte gebe Zahlen zwischen -10 und 100 ein.&lt;/p&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;form&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;input&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/form&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
</ol>
</div>
<p>Die JavaScript Datei mit dem Namen &#8220;initialize.js&#8221;, bef&#252;llt unsere HTML-Seite mit dem passenden Event &#8220;onkeyup&#8221;. Weiterhin befindet sich die Funktion inputCheck(), welche die Eingabe &#252;berpr&#252;ft, ebenfalls in dieser Datei. Die Trennung der Initialiserung und der Funktion hab auch ich mir bei diesem kleinen Beispiel gespart. Hier nun die initialize.js</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Schreibt den Event onkeyup in das Input-Feld.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> initialize<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> inputField = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;input&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputField.<span class="me1">setAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;onkeyup&quot;</span>,<span class="st0">&quot;inputCheck();&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Die Funktion welche die Pr&#252;fung der Zahlen durchf&#252;hrt und passende Meldungen</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* in den Paragraphen mit der id=&quot;message&quot; schreibt.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> inputCheck<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> eingabe = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;input&quot;</span><span class="br0">&#41;</span>.<span class="me1">value</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> messageField = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;message&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// ist das eingabefeld leer wird wie die Ursrp&#252;ngliche Meldung angegeben.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>eingabe == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; messageField.<span class="me1">innerHTML</span> = <span class="st0">&quot;Bitte gebe Zahlen zwischen -10 und 100 ein.&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Ist die Eingabe kleiner oder gleich -11 &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>eingabe <span class="sy0">&lt;</span> = <span class="nu0">-11</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; messageField.<span class="me1">innerHTML</span> = <span class="st0">&quot;Die Zahl &quot;</span> +eingabe+ <span class="st0">&quot; ist zu klein&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Ist die Eingabe kleiner oder gleich 100 und gr&#246;sser oder gleich -10 </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// ist das im g&#252;ltigen Bereich.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>eingabe <span class="sy0">&lt;</span>= <span class="nu0">100</span> <span class="sy0">&amp;&amp;</span> eingabe <span class="sy0">&gt;</span>= <span class="nu0">-10</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; messageField.<span class="me1">innerHTML</span> = <span class="st0">&quot;Die Zahl &quot;</span> +eingabe+ <span class="st0">&quot; ist ok&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Ist die Eingabe gr&#246;sser oder gleich 101, ist die Zahl zu gross</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>eingabe <span class="sy0">&gt;</span>= <span class="nu0">101</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; messageField.<span class="me1">innerHTML</span> = <span class="st0">&quot;Die Zahl &quot;</span> +eingabe+ <span class="st0">&quot; ist zu gross&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Falls die Eingabe keine Zahl ist (is Not a Number) wird ein unerlaubter </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// Wert gemeldet.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>isNaN<span class="br0">&#40;</span>eingabe<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; messageField.<span class="me1">innerHTML</span> = eingabe+<span class="st0">&quot; ist ein unerlaubter Wert&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen" title="Kleine Aufgabe um mit JavaScript Events rumzuspielen (28. Mai 2009)" class="liinternal">Kleine Aufgabe um mit JavaScript Events rumzuspielen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmierung" title="Programmierung (29. Januar 2009)" class="liinternal">Programmierung</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte" title="Objekte (13. M&auml;rz 2009)" class="liinternal">Objekte</a> (2)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Aufgabe Eingabefelder w&#228;hrend der Eingabe &#252;berpr&#252;fen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-eingabefelder-waehrend-der-eingabe-ueberpruefen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-eingabefelder-waehrend-der-eingabe-ueberpruefen#comments</comments>
		<pubDate>Mon, 27 Apr 2009 21:36:34 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=951</guid>
		<description><![CDATA[Dieser Artikel ist Teil 12 von 24 der Artikelserie  Grundlagen  Hier eine kleine Aufgabe mit der auf Anwendereingaben reagiert werden soll.
Erstelle eine kleine HTML Seite auf der ein Eingabefeld (input type=&#8221;text&#8221;) vorhanden ist.
Weiterhin soll auf der Seite eine ein Paragraph mit der id=&#8221;message&#8221; vorhanden sein.
Auf der Seite w&#228;re es sch&#246;n, wenn noch eine Eingabeaufforderung vorhanden [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 12 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Hier eine kleine Aufgabe mit der auf Anwendereingaben reagiert werden soll.</p>
<p>Erstelle eine kleine HTML Seite auf der ein Eingabefeld (input type=&#8221;text&#8221;) vorhanden ist.<br />
Weiterhin soll auf der Seite eine ein Paragraph mit der id=&#8221;message&#8221; vorhanden sein.<br />
Auf der Seite w&#228;re es sch&#246;n, wenn noch eine Eingabeaufforderung vorhanden w&#228;re. So nach dem Motto &#8220;Bitte gebe Zahlen zwischen -10 und 100 ein.</p>
<p>Wenn der Anwender nun eine Zahl eingibt, soll w&#228;hren der Eingabe kontrolliert werden ob es sich um eine korrekte Zahl handelt.<br />
Korrekte Zahlen sind dabei  Zahlen zwischen -10 und 100.</p>
<p>Folgende Ergebnisse werden erwartet:</p>
<ul>
<li>Eingabe von -13<br />
Fehlermeldung im message-Paragraph  &#8221;Zahl zu klein&#8221;</li>
<li>Eingabe von 0<br />
Ausgabe im message-Paragraph:  &#8220;Alles ok&#8221;</li>
<li>Eingabe von 102<br />
Fehlermeldung im message-Paragraph  &#8221;Zahl zu gross&#8221;</li>
<li>Eingabe von &#8220;alfred&#8221;<br />
Fehlermeldung im message-Paragraph  &#8221;Unerlaubter Wert&#8221;</li>
</ul>
<p>Soweit klar?<br />
Die Eingabe&#252;berpr&#252;fung soll w&#228;hrend der Anwender die Zahlen eintippt durchgef&#252;hrt werden.</p>
<h3>Aufgabe 1:</h3>
<p>Welche Programmiersprache, und warum, wirst du f&#252;r die Realisierung dieser Aufgabe einsetzen?</p>
<h3>Aufgabe 2:</h3>
<p>Schreibe mit Pseudocode was du genau machen willst.<br />
Welche HTML, PHP, JavaScript Dateien ben&#246;tigst du f&#252;r eine saubere Umsetzung?</p>
<h3>Aufgabe 1:</h3>
<p>Realisiere die Eingabefunktion.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen" title="L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen (29. April 2009)" class="liinternal">L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/knackpunkte-bei-der-klasse-asynccommunication" title="Knackpunkte bei der Klasse AsyncCommunication (31. M&auml;rz 2009)" class="liinternal">Knackpunkte bei der Klasse AsyncCommunication</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen" title="Kleine Aufgabe um mit JavaScript Events rumzuspielen (28. Mai 2009)" class="liinternal">Kleine Aufgabe um mit JavaScript Events rumzuspielen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-eingabefelder-waehrend-der-eingabe-ueberpruefen/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Objekte in JavaScript mit JSON deklarieren</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren#comments</comments>
		<pubDate>Sun, 26 Apr 2009 19:44:57 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Objekte]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=841</guid>
		<description><![CDATA[Dieser Artikel ist Teil 26 von 26 der Artikelserie  Programmieren  Im Artikel JavaScript Klassen mit Object-Literal Syntax erstellen habe ich &#252;ber die verk&#252;rzte Darstellungsform beim Erstellen von Klassen in JavaScript geschrieben.
Nachdem ich dr&#252;ber geschlafen habe, ist mir wieder das Wort JSON (Javascript Object Notation) eingefallen. Bl&#246;d wenn man ein bisschen verkalkt ist 
Unter [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 26 von 26 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/programmieren" title="series-23"> Programmieren</a> </strong> </div><p>Im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/javascript-klassen-mit-object-literal-syntax-erstellen" class="liinternal">JavaScript Klassen mit Object-Literal Syntax erstellen</a> habe ich &#252;ber die verk&#252;rzte Darstellungsform beim Erstellen von Klassen in JavaScript geschrieben.<br />
Nachdem ich dr&#252;ber geschlafen habe, ist mir wieder das Wort <a href="http://www.json.org/" class="liexternal">JSON (Javascript Object Notation)</a> eingefallen. Bl&#246;d wenn man ein bisschen verkalkt ist <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Unter JSON k&#246;nnen sich viele Menschen schon viel mehr vorstellen gelle?</p>
<h3>Ist JavaScript denn nun wie Java?</h3>
<p>JavaScript wird zwar wegen dem Marketingnamen von Netscape h&#228;ufig mit Java in Verbindung gebracht. Wenn man sich aber einfach klar macht, dass JavaScript einfach nur ein Name ist, dann wird einem auch ziemlich schnell klar dass man Java nicht mit JavaScript gleichsetzen darf.<br />
Immerhin hat JavaScript fr&#252;her mal LiveScript geheisen und dass hat nun wirklich nichts mit Java zu tun.<br />
Die Notationen sind zum Teil identisch. Und das macht es alten C++ und Java Tippern, wie mir zum Beispiel, nicht einfacher in den Mustern der anderen Sprachen zu denken.<br />
Aber JavaScript ist nun mal anders.</p>
<h3>Arrays sind Objekte</h3>
<p>In JavaScript wird sehr viel &#252;ber Arrays beschrieben.<br />
Ein Array kannst du wie ein <a href="http://www.baldenhofer.eu/blog/it/programmieren/arrays-in-php" class="liinternal">Assoziatives Array</a> in PHP oder anderen Sprachen verwenden.<br />
Du kannst aber auch Funktionen in die Arrays einschreiben. Genau das habe ich ja im letzten JavaScript Beispiel getan ohne es zu begreifen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .<br />
Wenn du die JSON Schreibweise mal gewohnt bist, kannst du komplexe Datenstrukturen &#252;bersichtlich darstellen. Und genau darum geht es bei JSON und dem Objekteinsatz in JavaScript.</p>
<h3>Typensicherheit in JavaScript</h3>
<p>Eben genau das gibt es in JavaScript nicht. Wenn du bei Sprachen, wie Java, deine Klassen deklarierst, hast du Typsicherheit. Du kannst einer Variablen, die einen Integer darstellt, keinen Boolean zuweisen. In JavaScript werden Variablen einfach benannt und du kannst ihnen zuweisen was du willst. Es ist also erlaubt folgende Sequenz einzugeben:</p>
<div class="geshi no javascript">
<div class="head">var eineVariable = 12;</div>
<ol>
<li class="li1">
<div class="de1">eineVariable = <span class="st0">&quot;Hallole du dolle Welt!&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">eineVariable = <span class="kw2">new</span> Object<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Wenn du Java Entwickler bist, bekommst du beim Anblick der Sequenz normalerweise Zahnweh. Ist aber egal. JavaScript ist eine andere Art von Programmiersprache und wenn man das einsetzen will, dann muss man damit umgehen wie es ist. Ansonsten k&#228;mpfst du immer gegen die Sprache an. Das bringt dich aber nicht weiter.<br />
Programmiersprachen sind dazu da, Business-Probleme zu l&#246;sen. Wenn du mehr Zeit damit verbringst zu phillosophieren warum etwas nicht so toll ist wie es sein k&#246;nnte, verlierst du wertvolle Zeit. Nimm die Zeit lieber zum Ausschlafen, Wandern oder Blog-Artikel schreiben.</p>
<h3>Nochmal zur JSON Schreibweise</h3>
<p>In JSON wird die Schl&#252;ssel-Wertezuweisung grunds&#228;tzlich durch einen Doppelpunkt beschrieben.</p>
<div class="geshi no javascript">
<div class="head">var eineVariable = new Array(){</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; alter &nbsp; &nbsp;: <span class="nu0">42</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; setAlter : <span class="kw2">function</span><span class="br0">&#40;</span>alter<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">alter</span> = alter;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Zwischen dem Schl&#252;ssel (z.B. alter) und dem Wert d&#252;rfen mehrere Leerzeichen stehen. Du darfst also einr&#252;cken und somit die Lesbarkeit erh&#246;hen.<br />
Ich habe den Code f&#252;r <a href="/programmieren/prototypLiteral_corrected.js" class="liinternal">das letzte Beispiel</a> etwas &#252;berarbeitet und nun vollst&#228;ndig auf JSON Schreibweise umgebaut.<br />
Dabei habe ich mal wieder die Fehlerkonsole eingeschaltet und meine nicht deklarierten Variablen mit dem Schl&#252;sselwort &#8220;var&#8221; definiert. Es ist doch immer wieder sch&#246;n, wenn die Fehlerkonsole keine Fehler anzeigt <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Beim Erstellen dieses Beispiels war ich vermutlich nicht ganz wach gewesen. Normalerweise schalte ich immer die Fehlerkonsole ein und bau Code der keine Informationen, Warnungen oder gar Fehler produziert.<br />
Wenn du JavaScript in deine Webseiten einbaust, solltest du beim Testen immer die Fehlerkonsole ge&#246;ffnet haben. Sie verr&#228;t dir viele spannende Details auf die du ansonsten nur schwer kommen kannst&#8230;</p>
<h3>Verschachtelung</h3>
<p>Wenn deine Datenstruktur nicht flach, sondern eher ein bisschen verschachtelt ist, kann das mit JSON auch sehr sch&#246;n beschrieben werden.<br />
Schau dir dazu doch einfach mal <a href="http://www.json.org/example.html" class="liexternal">JSON Beispiel zum Verschachteln</a> an.<br />
Die Verschachtelung erfolgt durch [] Klammern.<br />
Also ungef&#228;hr so:</p>
<div class="geshi no javascript">
<div class="head">{</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; a:<span class="nu0">6</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; a_a=<span class="br0">&#91;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; b:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; c:<span class="nu0">42</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; d:<span class="kw2">null</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#93;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; e:<span class="nu0">3</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; f:<span class="nu0">5</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Den einzelnen Attributen werden ihr Werte durch die Doppelpunkte zugewiesen und die Verschachtelung erfolgt durch die [] Klammern.<br />
Ich habe mich am Anfang ein wenig gegen diese Darstellung gestr&#228;ubt. So im Lauf der Zeit habe ich jedoch die Sch&#246;nheit und die klare Darstellung zu sch&#228;tzen gelernt.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen" title="Modelle von der Oberfl&#228;che trennen (24. April 2009)" class="liinternal">Modelle von der Oberfl&#228;che trennen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Programmieren]]></series:name>
	</item>
		<item>
		<title>Modelle von der Oberfl&#228;che trennen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen#comments</comments>
		<pubDate>Fri, 24 Apr 2009 17:22:47 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Modelle]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=812</guid>
		<description><![CDATA[Dieser Artikel ist Teil 11 von 24 der Artikelserie  Grundlagen  Bei komplexeren Webapplikationen ist es eine gute Idee die Views, also die Ansichten, von den Modellen getrennt zu halten.
Die Idee ist aus folgenden Gr&#252;nden gut:

Der Webdesigner soll nicht mit unleserilchem Code belastet werden.
Getrennt entwickelter Code ist &#252;bersichtlich und einfach zu warten.
Wenn ein Webdesigner [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 11 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Bei komplexeren Webapplikationen ist es eine gute Idee die Views, also die Ansichten, von den Modellen getrennt zu halten.</p>
<p>Die Idee ist aus folgenden Gr&#252;nden gut:</p>
<ul>
<li>Der Webdesigner soll nicht mit unleserilchem Code belastet werden.</li>
<li>Getrennt entwickelter Code ist &#252;bersichtlich und einfach zu warten.</li>
<li>Wenn ein Webdesigner in seinem HTML Code JavaScript Code-Segmente einpflegen muss, ist die Gefahr gross dass er dies falsch macht.</li>
<li>Ein Modell soll Daten speichern und verwalten und nicht mit einer View direkt verbunden sein. Falls eine zweite View hinzukommt, musst du ansonsten das Modell ver&#228;ndern.</li>
<li>Wenn die View direkt mit einem Modell verkuppelt wird, werden sp&#228;tere &#196;nderungen sehr aufw&#228;ndig.</li>
</ul>
<p>Es gibt noch hundert andere Gr&#252;nde. Aber belassen wir es mal dabei.</p>
<p>&lt;h3&gt;Das Model View Controller Pattern&lt;/h3&gt;</p>
<p>Ich werde in der Serie &lt;a href=&#8221;http://www.baldenhofer.eu/blog/series/design-pattern&#8221;&gt;Design Pattern&lt;/a&gt; die Eigenschaften des Model View Controller Pattern genauer beleuchten. Hier m&#246;chte ich einfach mal zeigen wie die Trennung von Daten (Modell), der Ablaufsteuerung (Controller) und der View (der HTML-Ansicht) funktionieren kann.</p>
<h3>Die View</h3>
<p>Ich habe eine kleine HTML-Seite gebaut, die unsere View darstellen soll. Diese HTML Seite beinhaltet nur HTML-Tags und im Header Bereich die Einbindung der JavaScript Datei in der ich den Controller und das Modell deklariert habe. Du kannst sie unter dem Link <a href="/programmieren/prototypLiteral.html" class="liinternal">PrototypLiteral</a> aufrufen.<br />
In der Seite passiert nicht viel Spannendes. Du kannst einen Namen und Vornamen eingeben und das Person-Objekt ver&#228;ndert die Attribute ein wenig.</p>
<p>Wenn du aus den Eingabefeldern herausspringst, werden die jeweiligen Meldungsparagraphen entsprechend ver&#228;ndert.</p>
<h3>Der Controller und das Modell</h3>
<p>In der Datei <a href="/programmieren/prototypLiteral.js" class="liinternal">PrototpyLiteral JavaScript</a> habe ich einen Controller und ein Modell eingeschrieben.<br />
Wenn du die Datei aufmachst findest du folgenden Code:</p>
<div class="geshi no javascript">
<div class="head">/**</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">*</span> Erstellt im HTML-Dokument die n&#246;tigen Eventhandler und initialisiert den Controller dieser Webappliaktion.</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="me1">*</span><span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> <span class="kw3">onload</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; controller = <span class="kw2">new</span> PrototypController<span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">document</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Der Controller, der die Aktivit&#228;ten innerhalb unserer Webapplikation steuert.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Im Konstruktor werden die Eingabefelder des HTML Dokuments mit den notwendigen onblur-Events ausgestattet.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> PrototypController<span class="br0">&#40;</span>document<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">document</span> = document;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">person</span> = <span class="kw2">new</span> Person<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> inputName = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputName.<span class="kw3">onblur</span> = <span class="kw1">this</span>.<span class="me1">onBlurHandlerName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputName.<span class="me1">value</span> = <span class="kw1">this</span>.<span class="me1">person</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Beim Event wird das betroffene HTML-Element &#252;bergeben. Dieses HTML Element muss eine Referenz auf</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// unseren Controller erhalten. Ansonsten k&#246;nnen wir keine Verkn&#252;pfung zwischen der Oberfl&#228;che und dem Modell erreichen.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputName.<span class="me1">controller</span> = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> inputFirstName = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;firstname&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputFirstName.<span class="kw3">onblur</span> = <span class="kw1">this</span>.<span class="me1">onBlurHandlerFirstName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputFirstName.<span class="me1">value</span> = <span class="kw1">this</span>.<span class="me1">person</span>.<span class="me1">getFirstname</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputFirstName.<span class="me1">controller</span> = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Implementation der ben&#246;tigten EventHandler.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">PrototypController.<span class="me1">prototype</span>=<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; onBlurHandlerName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Von der Referenz auf den Controller das Dokument und das Personenobjekt laden.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> document = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">document</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> person = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">person</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> value = <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">value</span><span class="br0">&#41;</span> ? <span class="kw1">this</span>.<span class="me1">value</span> : <span class="st0">&quot;Kein Name&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; person.<span class="me1">setName</span><span class="br0">&#40;</span>value<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;message_name&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message.<span class="me1">innerHTML</span> = person.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; onBlurHandlerFirstName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> value = <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">value</span><span class="br0">&#41;</span> ? <span class="kw1">this</span>.<span class="me1">value</span> : <span class="st0">&quot;Kein Name&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> document = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">document</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> person = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">person</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; person.<span class="me1">setFirstname</span><span class="br0">&#40;</span>value<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;message_firstname&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message.<span class="me1">innerHTML</span> = person.<span class="me1">getFirstname</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Das Modell, welches eine Person verwaltet.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> Person<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="kw3">name</span> = <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">firstName</span> = <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Person.<span class="me1">prototype</span>=<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; setName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="kw3">name</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="kw3">name</span> = <span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; getName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="kw3">name</span> <span class="sy0">!</span>= <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="kw3">name</span>+<span class="st0">&quot;_vomModel&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>, &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; setFirstname:<span class="kw2">function</span><span class="br0">&#40;</span>firstName<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">firstName</span> = firstName;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; getFirstname:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">firstName</span> <span class="sy0">!</span>= <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">firstName</span>+<span class="st0">&quot;_vomModel&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>In normalen Webanwendungen sollte das Modell und der Controller in einzelnen Dateien liegen. Darauf habe ich im Moment verzichtet, da dieses Beispiel sehr klein und &#252;bersichtlich ist.<br />
Die erste Funktion onload() wird im HTML beim Laden der Seite aufgerufen.<br />
Diese Funktion initialisiert einen Controller, der die Abl&#228;ufe im System &#252;berwachen soll.<br />
Der Controller (hier PrototypController) verkn&#252;pft das HTML-Dokument mit sich selbst, indem er die notwendigen Events wie onblur in das HTML-Dokument eintr&#228;gt.<br />
Weiterhin erstellt er das Modell (Person) in dem die Daten gespeichert werden sollen.<br />
Wenn ein Event auftritt wird eine der onBlurHandlerXXX Methoden aufgerufen. Diese steuern den eigentlichen Programmablauf.<br />
Der Controller ist somit das Bindeglied zwischen der Oberfl&#228;che und dem Modell.<br />
Wir k&#246;nnen f&#252;r einzelne Eingabeelemente das Model View Controller Pattern verwenden und so eine saubere, einfach zu wartende und stabile Verwaltung unserer Daten hinbekommen.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren" title="Objekte in JavaScript mit JSON deklarieren (26. April 2009)" class="liinternal">Objekte in JavaScript mit JSON deklarieren</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Eventhandler im JavaScript mit dem HTML Dokument verkn&#252;pfen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/eventhandler-im-javascript-mit-dem-html-dokument-verknuepfen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/eventhandler-im-javascript-mit-dem-html-dokument-verknuepfen#comments</comments>
		<pubDate>Fri, 17 Apr 2009 05:53:57 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[eventhandler]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=810</guid>
		<description><![CDATA[Dieser Artikel ist Teil 25 von 26 der Artikelserie  Programmieren  Als ich mit JavaScript angefangen habe, w&#228;re ich beinahe an der Variableng&#252;ltigkeit verzweifelt.
Folgende Problemstellungen wollte ich l&#246;sen:
Im Source-HTML kein JavaScript
Ich wollte, dass meine JavaScript Befehle im HTML nicht eingetragen werden m&#252;ssen.
Das bedeutet, dass keine onblur, onkeypressed oder sonst was f&#252;r Attribute in den [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 25 von 26 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/programmieren" title="series-23"> Programmieren</a> </strong> </div><p>Als ich mit JavaScript angefangen habe, w&#228;re ich beinahe an der Variableng&#252;ltigkeit verzweifelt.<br />
Folgende Problemstellungen wollte ich l&#246;sen:</p>
<h3>Im Source-HTML kein JavaScript</h3>
<p>Ich wollte, dass meine JavaScript Befehle im HTML nicht eingetragen werden m&#252;ssen.<br />
Das bedeutet, dass keine onblur, onkeypressed oder sonst was f&#252;r Attribute in den HTML Elementen hart reingeschrieben werden sollten.<br />
Also las ich die Grundlagenb&#252;cher und Grundlagenbeschreibungen im Internet und erkannte, dass ich beim Laden der HTML-Seiten meine JavaScript Trigger ins HTML Dokument einschreiben kann.<br />
Meine lieben Webdesigner bekommen ihr geliebtes HTML und m&#252;ssen sich dann nur noch an unsere Namenskonventionen f&#252;r IDs halten.<br />
Beide Personengruppen (Hacker und Designer) sind voneinander getrennt und gl&#252;cklich.<br />
Ich konnte meine Events also als nachtr&#228;glich reinfummeln.<br />
Beispiel:</p>
<div class="geshi no javascript">
<div class="head">/**</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">*</span> Erstellt im HTML-Dokument die n&#246;tigen Eventhandler und initialisiert den Controller dieser Webappliaktion.</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="me1">*</span><span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> <span class="kw3">onload</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; controller = <span class="kw2">new</span> PrototypController<span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">document</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Der Controller, der die Aktivit&#228;ten innerhalb unserer Webapplikation steuert.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Im Konstruktor werden die Eingabefelder des HTML Dokuments mit den notwendigen onblur-Events ausgestattet.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> PrototypController<span class="br0">&#40;</span>document<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">document</span> = document;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> inputName = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputName.<span class="kw3">onblur</span> = <span class="kw1">this</span>.<span class="me1">onBlurHandlerName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Beim Event wird das betroffene HTML-Element &#252;bergeben. Dieses HTML Element muss eine Referenz auf</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// unseren Controller erhalten. Ans onsten k&#246;nnen wir keine Verkn&#252;pfung zwischen der Oberfl&#228;che und dem Modell erreichen.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputName.<span class="me1">controller</span> = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> inputFirstName = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;firstname&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputFirstName.<span class="kw3">onblur</span> = <span class="kw1">this</span>.<span class="me1">onBlurHandlerFirstName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; inputFirstName.<span class="me1">controller</span> = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Implementation der ben&#246;tigten EventHandler.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">PrototypController.<span class="me1">prototype</span>=<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; onBlurHandlerName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Von der Referenz auf den Controller das Dokument und das Personenobjekt laden.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> document = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">document</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> value = <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">value</span><span class="br0">&#41;</span> ? <span class="kw1">this</span>.<span class="me1">value</span> : <span class="st0">&quot;Kein Name&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;message_name&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message.<span class="me1">innerHTML</span> = value;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; onBlurHandlerFirstName:<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> value = <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">value</span><span class="br0">&#41;</span> ? <span class="kw1">this</span>.<span class="me1">value</span> : <span class="st0">&quot;Kein Name&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> document = <span class="kw1">this</span>.<span class="me1">controller</span>.<span class="me1">document</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;message_firstname&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; message.<span class="me1">innerHTML</span> = value;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Im HTML Dokument lade ich diese JavaScript Datei und rufe die onload() Funktion auf.<br />
Diese Funktion erstellt mir ein Controller Objekt. Der Controller (PrototypController) f&#252;llt in die input-Felder name und firstname die onblur Attribute ein. Weiterhin wird dem jeweiligen Eingabefeld die Referenz auf den PrototypController mitgegeben.<br />
Das ist sehr wichtig.<br />
Wenn der onblur (also das Verlassen des Feldes Event) aufgerufen wird, wird eine der Methoden des PrototypController aufgerufen.<br />
<strong>Zum Zeitpunkt des Aufrufes stehen wir jedoch im Input-Feld. Somit ist &#8220;this&#8221; auch das Input Feld. </strong><br />
Wenn wir nun auf andere Element im Dokument verweisen wollen, ben&#246;tigen wir eine Referenz darauf.<br />
Das habe ich mit dem Verweis auf den Controller erledigt. Dieser beinhaltet einen Link auf das Dokument und kann somit die message-Elemente liefern.<br />
Mich hat das Stunden gekostet, bis ich endlich begriff wo mein Aufruf eigentlich herkommt.<br />
Die onBlurHandlerXXX Methoden sind Callback Funktionen. Das bedeutet, dass beim Aufruf nicht aus dem window oder document oder sonst wo her aufgerufen wird, sondern aus dem jeweiligen Input Element.<br />
&#220;berlege dir bitte wirklich genau, von wo dein Aufruf in deinem JavaScript- HTML DOM Konstrukt erfolgt. Ansonsten hast du pl&#246;tzlich &#8220;undefined&#8221; Objekte und keine Ahnung warum das so ist.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/download-fuer-javascript-wiederkehrender-event-mit-htaccess-anpassung" title="Download f&#252;r JavaScript wiederkehrender Event mit .htaccess Anpassung (17. Januar 2010)" class="liinternal">Download f&#252;r JavaScript wiederkehrender Event mit .htaccess Anpassung</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren" title="Objekte in JavaScript mit JSON deklarieren (26. April 2009)" class="liinternal">Objekte in JavaScript mit JSON deklarieren</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen" title="Modelle von der Oberfl&#228;che trennen (24. April 2009)" class="liinternal">Modelle von der Oberfl&#228;che trennen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/eventhandler-im-javascript-mit-dem-html-dokument-verknuepfen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Programmieren]]></series:name>
	</item>
		<item>
		<title>Auch bei JavaScript immer die Variablen sauber deklarieren</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/auch-bei-javascript-immer-die-variablen-sauber-deklarieren</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/auch-bei-javascript-immer-die-variablen-sauber-deklarieren#comments</comments>
		<pubDate>Sat, 11 Apr 2009 00:15:09 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Variablendeklaration]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=851</guid>
		<description><![CDATA[Dieser Artikel ist Teil 24 von 26 der Artikelserie  Programmieren  JavaScript ist keine typsichere Sprache. Du kannst Variablen uninitialisiert verwenden. Ich habe zum Beispiel im Literalen Prototyp Beispiel vers&#228;umt meine Fehlerkonsole einzuschalten und schon habe ich ein paar Variablen nicht richtig initialisiert.
Grunds&#228;tzlich ist eine nicht initialisierte Variable erst einmal eine globale Variable.
Bei kleinen, [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 24 von 26 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/programmieren" title="series-23"> Programmieren</a> </strong> </div><p>JavaScript ist keine typsichere Sprache. Du kannst Variablen uninitialisiert verwenden. Ich habe zum Beispiel im <a href="/programmieren/prototypLiteral.js" class="liinternal">Literalen Prototyp Beispiel</a> vers&#228;umt meine Fehlerkonsole einzuschalten und schon habe ich ein paar Variablen nicht richtig initialisiert.<br />
Grunds&#228;tzlich ist eine nicht initialisierte Variable erst einmal eine globale Variable.<br />
Bei kleinen, &#252;berschaubaren Scripts, ist das noch kein gr&#246;&#223;eres Problem.<br />
Wenn du aber eine Applikation schreibst und dann mehrere Bibliotheken und Scripte nachl&#228;dst, wird es schnell un&#252;bersichtlich. Globale Variablen haben den Nachteil, dass jeder sie &#228;ndern kann.<br />
Wenn du also Scripte schreibst, sorge daf&#252;r dass deine Variablen so lokal wie m&#246;glich initialisiert sind. Beispiele:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Au&#223;erhalb einer Funktion deklarierte, globale, Variable.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> global = <span class="st0">&quot;voll fett&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> meineFunktion<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Deklaration einer lokalen Variablen.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> lokaleVariable=<span class="st0">&quot;voll schlank&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Wenn du nun z.B.</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> meineFunktion<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Ohne Deklaration eine Variable eingef&#252;hrt.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; lokaleVariable=<span class="st0">&quot;voll schlank&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>schreibst, also dein &#8220;var&#8221; Schl&#252;sselwort nicht angibst, wird die Variable zwar angelegt, deine Fehlerkonsole meldet jedoch eine nicht initialisierte Variable. Was dann bei den jeweiligen Browsern passiert kannst du nicht 100% vorraussehen. Eventuell passiert gar nichts. Aber wenn du Pech hast, dann wird pl&#246;tzlich ein anderes Verhalten deinen Programmfluss st&#246;ren.<br />
Also, wie der Schwabe zu sagen pflegt: &#8220;Sauber schaffe und ned huddle&#8221;<br />
Immer sauber arbeiten und nicht pfuschen.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren" title="Objekte in JavaScript mit JSON deklarieren (26. April 2009)" class="liinternal">Objekte in JavaScript mit JSON deklarieren</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen" title="Modelle von der Oberfl&#228;che trennen (24. April 2009)" class="liinternal">Modelle von der Oberfl&#228;che trennen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/auch-bei-javascript-immer-die-variablen-sauber-deklarieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Programmieren]]></series:name>
	</item>
		<item>
		<title>Globale Variablen in JavaScript</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/globale-variablen-in-javascript</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/globale-variablen-in-javascript#comments</comments>
		<pubDate>Sat, 04 Apr 2009 05:58:11 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Variablen]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=834</guid>
		<description><![CDATA[Dieser Artikel ist Teil 10 von 24 der Artikelserie  Grundlagen  Ich habe schon ein paar mal auf den Variablen in JavaScript rumgehackt. Doch irgendwie glaube ich, es kann helfen wenn man ab- und zu mal dar&#252;ber schreibt.
Vor kurzem bin ich &#252;ber folgendes Konstrukt gestolpert:



// some code


&#8230;.


function sayHello&#40;&#41;&#123;


&#160; &#160; hello=&#34;huhu&#34;;


&#160; &#160; alert&#40;&#34;hello&#34;&#41;;


&#125;



Ok, es war [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 10 von 24 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/grundlagen" title="series-25"> Grundlagen</a> </strong> </div><p>Ich habe schon ein paar mal auf den Variablen in JavaScript rumgehackt. Doch irgendwie glaube ich, es kann helfen wenn man ab- und zu mal dar&#252;ber schreibt.<br />
Vor kurzem bin ich &#252;ber folgendes Konstrukt gestolpert:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// some code</span></div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sayHello<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; hello=<span class="st0">&quot;huhu&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Ok, es war eine andere Funktion und alles war viel komplizierter. Aber die Aussage bleibt die Gleiche.<br />
Die Variable <strong>hello</strong> wird dem Wert &#8220;huhu&#8221; zugewiesen. Wenn du deine Fehlerkonsole &#246;ffnest, wirst du beim Ausf&#252;hren dieses Codes eine Information erhalten.<br />
Diese Information besagt, dass eine Variable nicht initialisiert wurde.<br />
Eben, hello wurde nicht richtig deklariert. Was wir hier eigentlich wollen ist:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// some code</span></div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sayHello<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> hello=<span class="st0">&quot;huhu&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Jetzt weiss der JavaScript Interpreter, dass es sich um eine lokale Variable handelt.<br />
Keine Information mehr in der Fehlerkonsole.</p>
<h3>Aber das ist nicht mal das Problem!</h3>
<p>Wenn man sportlich genug ist und es f&#252;r unm&#228;nnlich h&#228;lt die Informationen in der Fehlerkonsole zu betrachten, dann ist die nicht Deklaration der hello-Varialben nicht so schlimm.<br />
Nur die Welt ist wie immer ein wenig gr&#246;sser und komplexer.<br />
Die Variable hello ist nicht deklariert worden und der JavaScript Interpreter definiert nun, dass diese Variable eine globale Variable ist.<br />
Ok, sagt der Cowboy. Wenn ich nur ein Script schreibe weiss ich ja, dass ich nur eine hello Variable habe.<br />
Was unser Cowboy aver vergisst, ist dass unsere Scripte in andere Scripte eingebunden werden k&#246;nnen.<br />
Programme haben die dumme Angewohnheit im Lauf der Entwicklung immer komplexer zu werden.<br />
Wenn du globale Variablen generierst, kannst du die Auswirkungen nicht &#252;berschauen. Es kann durchaus vorkommen, dass die globale Variable mehrfach in unterschiedlichen Funktionen verwendet wird.<br />
Und dann l&#228;uft pl&#246;tzlich nichts mehr.<br />
Dann beginnt die Fehlersuche und der Frust.<br />
Sei also vorsichtig und erstelle immer korrekt deklarierte Variablen. Wenn eine Variable wirklich globall, also von &#252;berall aus erreichbar, sein soll, dann deklariere sie auch so.<br />
In unserem Monsterbeispiel k&#246;nnen wir z.B. schreiben:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// some code</span></div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> hello=<span class="st0">&quot;huhu&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sayHello<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>oder</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// some code</span></div>
</li>
<li class="li1">
<div class="de1">&#8230;.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> hello = <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sayHello<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; hello = <span class="st0">&quot;huhu&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Und schon ist Lehrer Roland gl&#252;cklich und zufrieden.<br />
Wir tippen zwar ein bisschen mehr, aber nun haben wir eher das Gef&#252;hl der Kontrolle <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen" title="L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen (29. April 2009)" class="liinternal">L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen" title="Kleine Aufgabe um mit JavaScript Events rumzuspielen (28. Mai 2009)" class="liinternal">Kleine Aufgabe um mit JavaScript Events rumzuspielen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/aufgabe-ratespiel-um-mengenlehre-zu-verwenden" title="Aufgabe Ratespiel um Mengenlehre zu verwenden (7. Mai 2009)" class="liinternal">Aufgabe Ratespiel um Mengenlehre zu verwenden</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/variablenzuweisungen-und-berechnungen" title="Variablenzuweisungen und Berechnungen (29. Januar 2009)" class="liinternal">Variablenzuweisungen und Berechnungen</a> (4)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/globale-variablen-in-javascript/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Speicherverbrauch in AJAX Applikationen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen#comments</comments>
		<pubDate>Fri, 03 Apr 2009 11:13:11 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=837</guid>
		<description><![CDATA[Dieser Artikel ist Teil 23 von 26 der Artikelserie  Programmieren  Wenn du eine AJAX Applikation erstellst, wirst du auf ganz neue Probleme treffen.
Fr&#252;her haben wir eine Webseite zum Browser geschickt und uns &#252;ber unterschiedliche Browsereigenschaften, Wartezeiten und nette Inkompatibilit&#228;ten ge&#228;rgert.
Mit AJAX wird das noch toller!
Wir treffen mit AJAX n&#228;mlich noch auf noch mehr [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 23 von 26 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/programmieren" title="series-23"> Programmieren</a> </strong> </div><p>Wenn du eine AJAX Applikation erstellst, wirst du auf ganz neue Probleme treffen.<br />
Fr&#252;her haben wir eine Webseite zum Browser geschickt und uns &#252;ber unterschiedliche Browsereigenschaften, Wartezeiten und nette Inkompatibilit&#228;ten ge&#228;rgert.<br />
Mit AJAX wird das noch toller!<br />
Wir treffen mit AJAX n&#228;mlich noch auf noch mehr Inkompatibilit&#228;ten und haben dann noch das Problem von langl&#228;ufigen Applikationen.<br />
Aber da wir ja mit aller Gewalt unsere Webseiten aufpeppen wollen, m&#252;ssen wir halt damit umgehen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Bei einer AJAX Applikation ist eine der Grundideen so wenig wie n&#246;tig Seiten vom Server nachzuladen. Wir laden uns die inhaltsbezogenen Daten, oder angeln uns skriptbezogen alle Steuerungsmechanismen vom Server.<br />
Der im Browser angesiedelte JavaScript Interpreter l&#228;dt unsere Daten und verwaltet diese.<br />
Wenn eine Variable nicht mehr ben&#246;tigt wird, also beispielsweise wenn wir mit variable=null; die Variable freigeben, wird der interne Garbage Collector von Zeit zu Zeit die Variablen aus dem Speicher freigeben und alles putzen.<br />
Garbage Collectors haben wir auch in anderen Programmiersprachen, Wie beispielsweise Java.<br />
Jetzt gibt es aber ein Problem mit unserem Garbage Collector.<br />
Der M&#252;llmann l&#228;uft durch alle Speicherreservierungen durch und &#252;berpr&#252;ft, ob unsere Variablen mit anderen Variablen in Verbindung stehen.<br />
Wenn das so ist, wird die Variable nicht gel&#246;scht.<br />
Das bedeutet, dass wir die Variablen erst freigeben k&#246;nnen, wenn wir wirklich keine Referenz mehr auf die Variable haben.<br />
Wenn du nun f&#252;r eine Callback Funktion die Variablen von einzelnen Elementen miteinander hart verbindest, duplizierst du Code und generierst sogenannte Closure Funktionen.<br />
Das bedeutet, eine Funktion beinhaltet eine andere Funktion und nutzt deren Daten mit.<br />
Wenn wir also schreiben:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1">myObj.<span class="me1">prototype</span>.<span class="me1">doSomething</span>=<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> modelObj=<span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">aElement</span>.<span class="me1">onclick</span>=<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; fooEventHandler.<span class="me1">call</span><span class="br0">&#40;</span>modelObj<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Jetzt ist der fooEventHandler an die interne Variable modelObj gebunden. Wir werden also, solange fooEventHandler existiert, unser modelObj nicht l&#246;schen k&#246;nnen.<br />
Das ist zuerst mal kein Weltuntergang.<br />
Wenn du aber in deinem HTML Dokument viele dynamische Elemente erzeugst und die Elemente mit den Objekten verbindest, dann wird kein Aufr&#228;umen mehr m&#246;glich sein und der Speicherverbrauch steigt und steigt.<br />
Nach einer Zeit wird die Applikation immer langsamer und irgendwann friert unser Webbrowser ein.<br />
Wenn das passiert ist AJAX schuld und alle sind doof.<br />
Wir werden dadurch nicht erreichen, dass unsere Kunden zufrieden sind.</p>
<h3>Abhilfe?</h3>
<p>Wenn zyklische Verbindungen zwischen Objekten vorhanden sein m&#252;ssen, dann schau dir das immer genau an. Eventuell kannst du dynamische Elemente mehrfach verwenden.<br />
Beispielsweise kannst du einen Bereich f&#252;r Meldungen immer wieder verwenden und musst nicht immer neue DOM Elemente mit closure Eigenschaften erstellen. Du kannst die Anzahl deiner Elemente und Objekte klein halten und so den Speicherverbrauch optimieren.<br />
Schau dir ab- und zu mal den Speicherverbrauch deiner laufenden Applikation an. Wenn der aus dem Ruder ger&#228;t, solltest du dir Gedanken machen.<br />
Sei jedoch vorsichtig.<br />
Beim Einsatz von AJAX kann der Anwender alle m&#246;glichen nicht vorgesehenen Abl&#228;ufe anklicken. Er wird somit extrem viele Kombinationen der Erstellung und L&#246;schung von Objekten produzieren.<br />
Du wirst nicht alle Kombinationen testen k&#246;nnen. Aber du wirst durch vern&#252;nftige Generierung von Objekten ziemlich viele Speicherplatzprobleme schon beim Design l&#246;sen.</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/objekte-in-javascript-mit-json-deklarieren" title="Objekte in JavaScript mit JSON deklarieren (26. April 2009)" class="liinternal">Objekte in JavaScript mit JSON deklarieren</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/modelle-von-der-oberflaeche-trennen" title="Modelle von der Oberfl&#228;che trennen (24. April 2009)" class="liinternal">Modelle von der Oberfl&#228;che trennen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Programmieren]]></series:name>
	</item>
		<item>
		<title>Knackpunkte bei der Klasse AsyncCommunication</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/knackpunkte-bei-der-klasse-asynccommunication</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/knackpunkte-bei-der-klasse-asynccommunication#comments</comments>
		<pubDate>Tue, 31 Mar 2009 11:37:00 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[asynchron]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=678</guid>
		<description><![CDATA[Dieser Artikel ist Teil 22 von 26 der Artikelserie  Programmieren  Im Artikel Asynchrone Kommunikation mit JavaScript und Facade Pattern habe ich eine Beispielklasse f&#252;r die asynchrone Kommunikation erl&#228;utert.
Ich m&#246;chte noch kurz auf ein paar Programmzeilen eingehen, die ich darin verwendet habe und die vermutlich nicht sehr einfach zu verstehen sind.
Zuerst &#252;bergebe ich dem [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta"><strong>Dieser Artikel ist Teil 22 von 26 der Artikelserie <a href="http://www.baldenhofer.eu/blog/series/programmieren" title="series-23"> Programmieren</a> </strong> </div><p>Im Artikel <a href="http://www.baldenhofer.eu/blog/guggat_emol/asynchrone-kommunikation-mit-javascript-und-facade-pattern" class="liinternal">Asynchrone Kommunikation mit JavaScript und Facade Pattern</a> habe ich eine Beispielklasse f&#252;r die asynchrone Kommunikation erl&#228;utert.<br />
Ich m&#246;chte noch kurz auf ein paar Programmzeilen eingehen, die ich darin verwendet habe und die vermutlich nicht sehr einfach zu verstehen sind.<br />
Zuerst &#252;bergebe ich dem Konstruktor die sp&#228;ter aufzurufende Callback Funktion. Diese wird in der Zeile</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">this</span>.<span class="me1">callBackFunction</span> = callBackFunc;</div>
</li>
</ol>
</div>
<p>in die callBackFunction Variable eingetragen.<br />
Hier ist zuerst einmal festzustellen, dass dieser Funktion kein String mit Anf&#252;hrungszeichen sondern der Name der Funktion ohne Anf&#252;hrungszeichen mitgegeben wird.<br />
Also beim Aufruf des Konstruktors beispielsweise:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">this</span>.<span class="me1">asyncCommunication</span> = <span class="kw2">new</span> AsyncCommunication<span class="br0">&#40;</span>showHello<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Das war f&#252;r mich zumindest ein wenig anders als dass was ich erwartet h&#228;tte. Naja, bin halt ein alter C, C++ und Java Hacker&#8230;<br />
Dann der Aufruf der Callback Funktion:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> loader=<span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">this</span>.<span class="me1">request</span>.<span class="me1">onreadystatechange</span>=<span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; loader.<span class="me1">callBack</span>.<span class="me1">call</span><span class="br0">&#40;</span>loader<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hiermit wird dem onreadystatechange eine dynamische Funktion, die wir in unserer Klasse deklariert haben, &#252;bergeben. Die Schreibweise ist vielleicht ein wenig Gewohnheitsbed&#252;rftig. Ich interpretiere dies so, dass eine Funktion deklariert wird, die &#252;ber die Instanz loader.callback aufgerufen werden kann. Zuvor wird this dem loader zugewiesen.</p>
<p>Der Rest ist ziemlich geradeaus programmiert.<br />
Mit </p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span>readyState == <span class="kw1">this</span>.<span class="me1">READY_STATE_COMPLETE</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">callBackFunction</span>.<span class="me1">call</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>wird die Funktion, die wir ja vorher unserem Konstruktor &#252;bergeben haben, aufgerufen.<br />
Ich hoffe, ich konnte hiermit alle Klarheiten beseitigen und du verstehst nun den Code so gut, dass du ihn verwenden und nach deinen W&#252;nschen ab&#228;ndern kannst.<br />
Viel Spa&#223; damit!</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-einen-wiederkehrenden-event-erzeugen" title="Mit JavaScript einen wiederkehrenden Event erzeugen (10. M&auml;rz 2009)" class="liinternal">Mit JavaScript einen wiederkehrenden Event erzeugen</a> (5)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/mit-javascript-aus-einem-dokument-daten-lesen" title="Mit JavaScript aus einem Dokument Daten lesen (22. Februar 2009)" class="liinternal">Mit JavaScript aus einem Dokument Daten lesen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/guggat_emol/loesungsvorschlag-um-eingabefelder-waehrend-der-eingabe-mit-javascript-zu-ueberpruefen" title="L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen (29. April 2009)" class="liinternal">L&#246;sungsvorschlag um Eingabefelder w&#228;hrend der Eingabe mit JavaScript zu &#252;berpr&#252;fen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/kleine-aufgabe-um-mit-javascript-events-rumzuspielen" title="Kleine Aufgabe um mit JavaScript Events rumzuspielen (28. Mai 2009)" class="liinternal">Kleine Aufgabe um mit JavaScript Events rumzuspielen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/einbinden-der-javascript-timer-klasse-in-eine-webseite" title="Einbinden der JavaScript Timer Klasse in eine Webseite (12. M&auml;rz 2009)" class="liinternal">Einbinden der JavaScript Timer Klasse in eine Webseite</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/knackpunkte-bei-der-klasse-asynccommunication/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Programmieren]]></series:name>
	</item>
		<item>
		<title>AJAX in Action</title>
		<link>http://www.baldenhofer.eu/blog/unterricht/buecher-unterricht/ajax-in-action</link>
		<comments>http://www.baldenhofer.eu/blog/unterricht/buecher-unterricht/ajax-in-action#comments</comments>
		<pubDate>Sun, 29 Mar 2009 22:25:49 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Bücher]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[buchbeschreibung]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=608</guid>
		<description><![CDATA[Mit AJAX in Action steht dir ein  Buch zur Verf&#252;gung mit dem die Funktionsweise und die Strategien zur Erstellung von AJAX Anwendungen n&#228;her gebracht werden.
Wenn du mal reinspickeln willst, kannst du das mit der Buchvorschau tun.
Von diesem Buch habe ich irgendwie zwei Eindr&#252;cke.
Zum Einen ist es ein Leitfaden, der sehr viele AJAX Aspekte betrachtet. [...]]]></description>
			<content:encoded><![CDATA[<p>Mit <a href="http://www.addison-wesley.de/main/main.asp?page=home%2Fbookdetails&amp;ProductID=117806&amp;SID={666EC2AF-205F-4314-9E16-E1EF66CB649E}" class="liexternal">AJAX in Action</a> steht dir ein  Buch zur Verf&#252;gung mit dem die Funktionsweise und die Strategien zur Erstellung von AJAX Anwendungen n&#228;her gebracht werden.<br />
Wenn du mal reinspickeln willst, kannst du das mit der <a href="http://books.google.de/books?id=DjeQbDuoS4wC&#038;pg=PA178&#038;lpg=PA178&#038;dq=reflection+javascript&#038;source=bl&#038;ots=kwRnI0I3I8&#038;sig=w1ronQEYDBvfxMHSbRFS_M2YDB0&#038;hl=de&#038;ei=syjPSYb6FNWKsAaTrZW0CA&#038;sa=X&#038;oi=book_result&#038;resnum=7&#038;ct=result#PPA273,M1" class="liexternal">Buchvorschau</a> tun.</p>
<p>Von diesem Buch habe ich irgendwie zwei Eindr&#252;cke.<br />
Zum Einen ist es ein Leitfaden, der sehr viele AJAX Aspekte betrachtet. Nach dem Durcharbeiten dieses Buches hast du ziemlich viele Eindr&#252;cke zum Thema JavaScript und AJAX erhalten.<br />
Das Buch kratzt an vielen Themengebieten an und du kannst dir die wichtigsten Aspekte herausnehmen und weiterentwickeln.<br />
Zum Anderen ist das Buch extrem oberfl&#228;chlich. Bei der Menge von Themen, die die Autoren hier betrachten, ist das auch nicht weiter verwunderlich.<br />
Aber wenn du einfach nur ein bisschen AJAX lernen willst, bist du eventuell mit dem Buch nicht zufrieden.</p>
<p>Mir haben die Randbemerkungen und Einblicke in JavaScript Eigenschaften sehr viel geholfen.<br />
Aber einfach zu lesen ist das Buch meiner Meinung nach nicht.<br />
Immer wenn es ein Thema angeschnitten hat, kommt die Beschreibung bis zu einem Punkt an dem du glaubst &#8220;Jetzt kommt gleich die Erleuchtung!&#8221;. Doch die kommt leider nicht.<br />
Denn sobald das Thema ein wenig aus dem Dunkeln erscheint, wird das Kapitel gewechselt.</p>
<p>Wie gesagt, ich finde dieses Buch wirklich nicht schlecht. Irgendwie empfinde ich es als eines der wirklich lesenswerten B&#252;cher. Dann wieder glaube ich, dass einfach zu viele Themen zu oberfl&#228;chlich behandelt wurden.</p>
<p>Inhaltlich beschreibt es immer wieder wie man mit Code Refacturing umgehen kann.<br />
Es kratzt hier- und da an diesem Thema.<br />
Dieses Kratzen finde ich wirklich gut, da Code Refacturing nicht zur allgemeinen Sportart verkommen sollte und man sich nur noch mit diesem Themengebiet vergn&#252;gt.</p>
<p>Sei mit den Code Beispielen vorsichtig!<br />
Ich habe festgestellt, dass hier ziemlich viel Zeug reingeschrieben wurde, da die Autoren in einem fr&#252;heren Kapitel einige Aspekte erkl&#228;ren wollten und dann den Code nachher nicht mehr angepasst haben. Der Code ist zum Teil schwer verst&#228;ndlich und hier- und da nicht gerade nett zum Verwenden.<br />
Einfach nur kopieren und verwenden ist immer eine schlechte Idee. Im Fall dieses Buches aber noch ein bisschen mehr.</p>
<p>Wenn du das Buch von vorne bis hinten akribisch durchackerst, wirst du jedoch die einzelnen Aspekte der einzelnen Code Zeilen verstehen. Die Autoren f&#252;gen hin- und wieder die notwendigen Erkl&#228;rungen bei und dabei kamen bei mir zumindest immer wieder ein paar Aha Momente vor.<br />
Vielleicht sollte man das Buch als eine andere Art von einer Ansammlung von Kurzgeschichten ansehen. Dann ist es f&#252;r ein Lehrbuch relativ kurzweilig zu lesen und die Kurzgeschichten f&#252;hren dazu, dass man gerne mehr liest&#8230;</p>
<hr /><h2>&#196;hnliche Beitr&#228;ge</h2><ul>
<!-- Generated by Simple Tags 1.6.6 - http://wordpress.org/extend/plugins/simple-tags -->
	<h4 class="clear">Artikel mit &#228;hnlichen Schlagw&#246;rtern</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/asynchrone-kommunikation-mit-javascript-und-facade-pattern" title="Asynchrone Kommunikation mit JavaScript und Facade Pattern (26. M&auml;rz 2009)" class="liinternal">Asynchrone Kommunikation mit JavaScript und Facade Pattern</a> (1)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/ajax-kommunikation-ohne-facade-pattern" title="AJAX Kommunikation ohne Fassaden Pattern (25. M&auml;rz 2009)" class="liinternal">AJAX Kommunikation ohne Fassaden Pattern</a> (1)</li>
	<li><a href="http://www.baldenhofer.eu/blog/unterricht/visualisieren-von-geodaten-mit-svg-im-internet" title="Visualisieren von Geodaten mit SVG im Internet (26. M&auml;rz 2009)" class="liinternal">Visualisieren von Geodaten mit SVG im Internet</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/speicherverbrauch-in-ajax-applikationen" title="Speicherverbrauch in AJAX Applikationen (3. April 2009)" class="liinternal">Speicherverbrauch in AJAX Applikationen</a> (0)</li>
	<li><a href="http://www.baldenhofer.eu/blog/it/programmieren/singletons-in-javascript" title="Singletons in JavaScript (20. M&auml;rz 2009)" class="liinternal">Singletons in JavaScript</a> (0)</li>
</ul>

</ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog" class="liinternal">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis f&#252;r Feedleser: Beitr&#228;ge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/unterricht/buecher-unterricht/ajax-in-action/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
