Prüfen der Existenz von HTML-Objekten – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self?srt=yes Prüfen der Existenz von HTML-Objekten Sun, 07 Jan 07 08:50:58 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063530?srt=yes#m1063530 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063530?srt=yes#m1063530 <p>Hallo,</p> <p>in einem HTML-File werden dynamisch (durch PHP) <INPUT>-Objekte mit eindeutigen IDs erzeugt, welche nach einem Muster generiert werden. Alle IDs werden nach dem Format "i_final" erzeugt. (Bsp.: 1_final oder 23_final) Da max. 200 solcher Objekte existieren können, möchte ich nun per Javascript die vorhandenen ID's erfassen und deren Inhalt aufsummieren. Da diese <INPUT>-Objekte zusätzlich per JavaScript (DOM) erzeugt und gelöscht werden, kann ich kein PHP einsetzen. Durch das Löschen von Objekten entstehen somit Lücken in den ID-Reihen. (id="1_final", id="2_final", id="3_final" -> nun löschen des Objektes mit der id="2_final" -> id="1_final", id="3_final").</p> <p>Mein unten stehender Lösungsansatz ergibt als Ausgabe die Zahl 201, also läuft die Schleife komplett durch und es ist somit völlig egal ob die ID exisitert oder nicht. Ich möchte aber genau das kontrollieren.</p> <p>Für konstruktive Vorschläge wäre ich euch echt dankbar.</p> <p>ciao<br> Andreas</p> <p>------------------------------------------------------------<br> JavaScript<br> ------------------------------------------------------------<br> function update_Gesamt() {<br>   var gesamt = 0;<br>   for (var i=0; i <= 200; i++) {<br>     if (typeof(document.getElementById(i + "_final")) != "undefined") {<br>       gesamt = gesamt + 1;<br>     }<br>   }<br>   document.getElementById('gesamt').value = gesamt;<br> }<br> ------------------------------------------------------------</p> Prüfen der Existenz von HTML-Objekten Sun, 07 Jan 07 10:06:17 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063534?srt=yes#m1063534 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063534?srt=yes#m1063534 <p>Hi,</p> <blockquote> <p>Alle IDs werden nach dem Format "i_final" erzeugt. (Bsp.: 1_final oder 23_final)</p> </blockquote> <p>das ist invalide. IDs müssen mit einem Buchstaben beginnen.</p> <p>Cheatah</p> <div class="signature">-- <br> X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|<br> X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html<br> X-Will-Answer-Email: No<br> X-Please-Search-Archive-First: Absolutely Yes </div> Prüfen der Existenz von HTML-Objekten Sun, 07 Jan 07 10:58:49 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063532?srt=yes#m1063532 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063532?srt=yes#m1063532 <p>Moin,</p> <blockquote> <p>Mein unten stehender Lösungsansatz ergibt als Ausgabe die Zahl 201, also läuft die Schleife komplett durch und es ist somit völlig egal ob die ID exisitert oder nicht. Ich möchte aber genau das kontrollieren.</p> </blockquote> <blockquote> <p>if (typeof(document.getElementById(i + "_final")) != "undefined")</p> </blockquote> <p>Bei nicht existierenden IDs gibt getElementById() bekanntlich null zurück. Bist du sicher, dass dieser Wert als undefined gilt? Ich würde daher lieber auf den Wert null bzw. nicht-null abfragen. Einfach formuliert:</p> <blockquote> <p>if (document.getElementById(i + "_final"))</p> </blockquote> <p>Dazu kommt, was <a href="https://forum.selfhtml.org/?t=143489&m=931638" rel="noopener noreferrer">Cheatah</a> schon sagte, nämlich dass IDs nicht mit einer Ziffer beginnen dürfen.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Paradox ist, wenn jemand eingefleischter Vegetarier ist. </div> Prüfen der Existenz von HTML-Objekten Mon, 08 Jan 07 09:19:47 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063531?srt=yes#m1063531 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063531?srt=yes#m1063531 <p>Nochmal vielen Dank für die schnelle und sehr gute Hilfe.<br> Ich habe die id's geändert und die if-Bedingung sieht nun wie folgt aus.<br> (Es funktioniert!)</p> <p>ciao<br> Andreas</p> <p>------------------------------------------------------------------------<br> function doRound(x, places) {<br>   return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);<br> }</p> <p>function update_Gesamt() {<br>   var gesamt = 0;<br>   for (var i=0; i <= 200; i++) {<br>     if (document.getElementById("p_" + i + "_final")) {<br>       var final = parseFloat(document.getElementById("p_" + i + "_final").value);<br>       gesamt = gesamt + final;<br>     }<br>   }<br>   document.getElementById('gesamt').value = doRound(gesamt, 2);<br> }</p> Prüfen der Existenz von HTML-Objekten Sun, 07 Jan 07 13:09:24 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063533?srt=yes#m1063533 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063533?srt=yes#m1063533 <p>Hallo,</p> <blockquote> <blockquote> <p>if (typeof(document.getElementById(i + "_final")) != "undefined")</p> </blockquote> <p>Bei nicht existierenden IDs gibt getElementById() bekanntlich null zurück. Bist du sicher, dass dieser Wert als undefined gilt?</p> </blockquote> <p>Lustigerweise ist typeof(null) == "object", also ist diese Abfrage wirklich fehlerhaft.</p> <p>Mathias</p> Prüfen der Existenz von HTML-Objekten Sun, 07 Jan 07 18:01:15 Z https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063535?srt=yes#m1063535 https://forum.selfhtml.org/self/2007/jan/7/pruefen-der-existenz-von-html-objekten/1063535?srt=yes#m1063535 <p>Danke für die schnelle Antwort. Ich werde es heute Abend mal ausprobieren.</p> <p>ciao<br> Andreas</p> <blockquote> <p>Hi,</p> <blockquote> <p>Alle IDs werden nach dem Format "i_final" erzeugt. (Bsp.: 1_final oder 23_final)</p> </blockquote> <p>das ist invalide. IDs müssen mit einem Buchstaben beginnen.</p> <p>Cheatah</p> </blockquote>