testen ob "element has no properties" – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self testen ob "element has no properties" Fri, 01 Feb 08 15:12:51 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208555#m1208555 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208555#m1208555 <p>Hi,</p> <p>wie kann ich im JS testen ob ei element überhaupt eine property hat?</p> <p>if ( "element has no property" ?? ) {<br>   // mach was<br> }</p> <p>vielen Dank und Gruß<br> Kermit</p> testen ob "element has no properties" Fri, 01 Feb 08 15:18:53 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208556#m1208556 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208556#m1208556 <p>Hello,</p> <blockquote> <p>wie kann ich im JS testen ob ei element überhaupt eine property hat?</p> </blockquote> <p>rührt dein Drang daher, eine Browserfehlermeldung NICHT zu bekommen? "has no properties" ist des Browsers Art dir zu sagen, dass das Objekt für ihn nicht existiert. Der entsprechende Vergleich dazu lautet<br> if (elem == null) {<br>    // do something<br> }</p> <p>MfG<br> Rouven</p> <div class="signature">-- <br> -------------------<br> sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (<a href="http://selfspezial.atomic-eggs.com/scode/selfcode.php?encodieren" rel="nofollow noopener noreferrer">SelfCode</a>)<br> </div> testen ob "element has no properties" Fri, 01 Feb 08 15:26:01 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208560#m1208560 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208560#m1208560 <p>Hi,</p> <p>nein, ich benutze prototype.js und auf eine bestimmte Seite schmeißt ein Fehler:<br> element has no properties<br> if ( element.offsetTop != null ) {<br> dein Beispiel funz also nicht.</p> <p>prototype.js 1.6 line 2006<br> ....<br>   cumulativeOffset: function(element) {<br>     var valueT = 0, valueL = 0;<br>     do {<br> if ( element.offsetTop != null ) {<br>      valueT += element.offsetTop  || 0;<br> }<br>       valueL += element.offsetLeft || 0;<br>       element = element.offsetParent;<br>     } while (element);<br>     return Element._returnOffset(valueL, valueT);<br>   },<br> ....</p> "Type Detection" als Grundlage eines devensiven Programmierstils Fri, 01 Feb 08 16:47:55 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208558#m1208558 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208558#m1208558 <p>hallo Rouven, gruss Kermit,</p> <blockquote> <blockquote> <p>wie kann ich im JS testen ob ei element überhaupt eine property hat?</p> </blockquote> </blockquote> <blockquote> <p>rührt dein Drang daher, eine Browserfehlermeldung NICHT zu bekommen?<br> "has no properties" ist des Browsers Art dir zu sagen, dass das Objekt<br> für ihn nicht existiert. Der entsprechende Vergleich dazu lautet</p> <p>if (elem == null) {<br>    // do something<br> }</p> </blockquote> <p>ein vergleichender test auf die werte der primitiven typen [undefined] und<br> [null] sollte niemals mit dem vergleichsoperator [==] durchgefuehrt werden:</p> <pre><code class="block language-javascript"><span class="token function">alert</span><span class="token punctuation">(</span><span class="token keyword">null</span> <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token comment">// [true] - wie zu erwarten </span> <span class="token function">alert</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>undefined <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// auch [true] </span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token number">0</span> <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ebenfalls [true];</span> </code></pre> <p>wenn schon unschoen, dann bitte mit dem identitaetsoperator [===]:</p> <pre><code class="block language-javascript"><span class="token function">alert</span><span class="token punctuation">(</span><span class="token keyword">null</span> <span class="token operator">===</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token comment">// immer noch [true] </span> <span class="token function">alert</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>undefined <span class="token operator">===</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// richtigerweise [false] </span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token number">0</span> <span class="token operator">===</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ebenfalls richtigerweise [false];</span> </code></pre> <p>besser waere es, <a href="http://www.pseliger.de/jsExtendedApi/jsApi.Object.typeDetection.new.dev.js" rel="nofollow noopener noreferrer">einigermassen venuenftige "type detection" zu betreiben</a>:</p> <pre><code class="block language-javascript"><span class="token keyword">this</span><span class="token punctuation">.</span>isUndefined <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">obj</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> obj <span class="token operator">==</span> <span class="token string">"undefined"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">this</span><span class="token punctuation">.</span>isNull <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">obj</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//return ((typeof obj == "object") && (obj === null)); </span> <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">typeof</span> obj <span class="token operator">==</span> <span class="token string">"object"</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token punctuation">(</span><span class="token operator">!</span>obj<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>so long - peterS. - pseliger@gmx.net</p> <div class="signature">-- <br> »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.<br> Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - <a href="http://javascript.crockford.com/" rel="nofollow noopener noreferrer">Douglas Crockford</a><br> <a href="http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%28+fl%3A%29+br%3A%3E+va%3A%28+ls%3A%26+fo%3A%29+rl%3A%29+n3%3B%7D+n4%3A%7D+ss%3A%7D+de%3A%B5+js%3A%7D+mo%3A%3F+zu%3A%5D" rel="nofollow noopener noreferrer">ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]</a><br> </div> testen ob "element has no properties" Fri, 01 Feb 08 19:12:26 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208557#m1208557 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208557#m1208557 <p>Hallo,</p> <blockquote> <p>Der entsprechende Vergleich dazu lautet<br> if (elem == null) {<br>    // do something<br> }</p> </blockquote> <p>Da reicht eigentlich if (elem) { ... }</p> <p>Ich wüsst jetzt auf die Schnelle nicht, welchen signifikanten Unterschied == null macht (außer null == null ergibt true).</p> <p>Aber das ist jetzt ziemlich allgemein, meistens will man zumindest typeof != undefined oder typeof == einen bestimmten Typ, wie gesagt.</p> <p>Mathias</p> <div class="signature">-- <br> <a href="http://aktuell.de.selfhtml.org/weblog/" rel="nofollow noopener noreferrer">SELFHTML aktuell Weblog</a> </div> "Type Detection" als Grundlage eines devensiven Programmierstils Fri, 01 Feb 08 17:18:54 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208559#m1208559 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208559#m1208559 <p>Hi,</p> <blockquote> <p>ein vergleichender test auf die werte der primitiven typen [undefined] und<br> [null] sollte niemals mit dem vergleichsoperator [==] durchgefuehrt werden:</p> </blockquote> <p>Als bekennender Vertreter eines abwärtskompatiblen Programmierstils (sofern möglich) stößt mir dieses "niemals" immer sauer auf!</p> <p>Ich mache mir auch lieber schon bei der Programmentwicklung Gedanken, welche Werte ich bei einer Abfrage/einem Vergleich zu erwarten habe. Bei einer Abfrage eines Object erwarte ich keine 0 oder Leerstring (bei einer Object-Eigenschaft sieht das schon anders aus).</p> <p>Ansonsten stimme ich deinem Posting, insbes. was die type detection angeht, zu.</p> <p>Gruß, Cybaer</p> <div class="signature">-- <br> Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)<br> Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist) </div> testen ob "element has no properties" Fri, 01 Feb 08 15:29:44 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208563#m1208563 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208563#m1208563 <p>[latex]Moin![/latex]</p> <blockquote> <p>nein, ich benutze prototype.js und auf eine bestimmte Seite schmeißt ein Fehler:<br> element has no properties<br> if ( element.offsetTop != null ) {<br> dein Beispiel funz also nicht.</p> </blockquote> <p>Versuche es mit <a href="http://de.selfhtml.org/javascript/sprache/operatoren.htm#typeof" rel="nofollow noopener noreferrer">typeof</a></p> <p>Cü,</p> <p>Kai</p> <div class="signature">-- <br> I got sunshine in my stomach, Like I just rocked my baby to sleep.<br> I got sunshine in my stomach, But I can't keep me from creeping sleep,<br> Sleep, deep in the deep.<br> ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|] </div> testen ob "element has no properties" Fri, 01 Feb 08 15:38:06 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208562#m1208562 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208562#m1208562 <p>Hello,</p> <blockquote> <p>element has no properties<br> if ( element.offsetTop != null ) {<br> dein Beispiel funz also nicht.</p> </blockquote> <p>doch, tut es. Bitte lies genau: element has no properties - nicht offsetTop has no properties. Element hat also keine Eigenschaften auf die man zugreifen kann, aller Wahrscheinlichkeit nach weil element==null.</p> <p>MfG<br> Rouven</p> <div class="signature">-- <br> -------------------<br> sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (<a href="http://selfspezial.atomic-eggs.com/scode/selfcode.php?encodieren" rel="nofollow noopener noreferrer">SelfCode</a>)<br> </div> testen ob "element has no properties" Fri, 01 Feb 08 15:38:28 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208561#m1208561 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208561#m1208561 <p>你好 Kermit,</p> <blockquote> <p>element has no properties<br> if ( element.offsetTop != null ) {<br> dein Beispiel funz also nicht.</p> </blockquote> <p>Du hast es falsch angewendet:</p> <pre><code class="block language-javascript"> <span class="token function-variable function">cumulativeOffset</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">element</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> valueT <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> valueL <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>element <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token punctuation">;</span> <span class="token keyword">do</span> <span class="token punctuation">{</span> valueT <span class="token operator">+=</span> element<span class="token punctuation">.</span>offsetTop <span class="token operator">||</span> <span class="token number">0</span><span class="token punctuation">;</span> valueL <span class="token operator">+=</span> element<span class="token punctuation">.</span>offsetLeft <span class="token operator">||</span> <span class="token number">0</span><span class="token punctuation">;</span> element <span class="token operator">=</span> element<span class="token punctuation">.</span>offsetParent<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>element<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> Element<span class="token punctuation">.</span><span class="token function">_returnOffset</span><span class="token punctuation">(</span>valueL<span class="token punctuation">,</span> valueT<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>再见,<br>  克里斯蒂安</p> <div class="signature">-- <br> <a href="http://ck.kennt-wayne.de/bauer-sucht-frau" rel="nofollow noopener noreferrer">Bauer sucht Frau!</a> | <a href="http://ck.kennt-wayne.de/ich-bin-ja-eigentlich-kein-serien-junkie" rel="nofollow noopener noreferrer">Ich bin ja eigentlich kein Serien-Junkie…</a><br> Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!<br> <a href="http://wwwtech.de/" rel="noopener noreferrer">http://wwwtech.de/</a><br> </div> testen ob "element has no properties" Fri, 01 Feb 08 15:37:08 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208564#m1208564 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208564#m1208564 <p>hab ich schon, gleicher Fehlermeldung</p> testen ob "element has no properties" Fri, 01 Feb 08 15:43:08 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208565#m1208565 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208565#m1208565 <p>mit try-catch funz<br> try {</p> <p>} catch(e) {</p> <p>}</p> testen ob "element has no properties" Fri, 01 Feb 08 15:59:09 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208566#m1208566 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208566#m1208566 <p>Hi,</p> <blockquote> <p>mit try-catch funz</p> </blockquote> <p>Nein. Damit wird nur der Fehler, den Du machst versteckt. try-catch nimmt man *nur* dann, wenn es wirklich nicht anders geht (schon aufgrund seiner Nachteile). try-catch nimmt man hingegen nicht, nur weil man es einfach nicht richtig hinbekommt. Ist letztere Situation gegeben (wie hier), heißt die funzende Lösung nicht try-catch, sondern learning-understanding.</p> <p>Gruß, Cybaer</p> <div class="signature">-- <br> Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)<br> Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist) </div> testen ob "element has no properties" Fri, 01 Feb 08 16:06:59 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208567#m1208567 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208567#m1208567 <blockquote> <p>Hi,</p> <blockquote> <p>mit try-catch funz</p> </blockquote> <p>Nein. Damit wird nur der Fehler, den Du machst versteckt. try-catch nimmt man *nur* dann, wenn es wirklich nicht anders geht (schon aufgrund seiner Nachteile).</p> </blockquote> <p>Welche Nachteile hat es denn und warum sollte man es nicht nehmen?<br> Ich nehme es immer aus bequemlichkeit, weil man sich damit viele Abfragen ersparen kann und es im Endeffekt auf genau dasselbe hinausläuft.</p> testen ob "element has no properties" Fri, 01 Feb 08 16:32:02 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208569#m1208569 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208569#m1208569 <p>weil es wahrscheinlich zu viel overhead erzeugt und somit der Script langsamer wird.</p> <p>ich habe am Anfang falsch geprüft<br> mit element == null funz einwandfrei</p> testen ob "element has no properties" Fri, 01 Feb 08 19:07:16 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208568#m1208568 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208568#m1208568 <p>Hallo,</p> <blockquote> <p>Welche Nachteile hat es denn und warum sollte man es nicht nehmen?<br> Ich nehme es immer aus bequemlichkeit, weil man sich damit viele Abfragen ersparen kann und es im Endeffekt auf genau dasselbe hinausläuft.</p> </blockquote> <p>Super, dann kannst du ja einfach deinen ganzen Code in ein riesiges try-catch packen und brauchst gar nicht mehr nachdenken... ;)</p> <p>So wird man aber nie ein komplexes und gleichzeitig kompatibles Script hinbekommen. JavaScripte leben davon, Abfragen zu machen. Im "Fehlerfall" brechen sie nicht einfach ab, sondern laufen bestenfalls weiter, versuchen Alternativen oder brechen zumindest *kontrolliert* ab, sodass der Autor den Fehler finden kann und der Anwender ein konsistentes Resultat sieht.</p> <p>Das alles ist mit try-catch unmöglich oder viel schwerer möglich. try-catch ist für ganz andere Zwecke gedacht. Damit kann man sich nichts "ersparen"!</p> <p>Mathias</p> <div class="signature">-- <br> <a href="http://aktuell.de.selfhtml.org/weblog/" rel="nofollow noopener noreferrer">SELFHTML aktuell Weblog</a> </div> testen ob "element has no properties" Sat, 02 Feb 08 11:27:41 Z https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208570#m1208570 https://forum.selfhtml.org/self/2008/feb/1/testen-ob-element-has-no-properties/1208570#m1208570 <p>Hi,</p> <blockquote> <p>weil es wahrscheinlich zu viel overhead erzeugt und somit der Script langsamer wird.</p> </blockquote> <p>Jep.</p> <p>Gruß, Cybaer</p> <div class="signature">-- <br> Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)<br> Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist) </div>