Stefan: innerHTML abfragen

Hallo,

ich möchte feststellen ob ein Element wie dieses:
<div id="info"></div>
einen Inhalt hat oder nicht:

if (elm.innerHTML == "") // oder null
{
  alert("leer");
}
else
{
  alert("voll"):
}

Selbst wenn tatsächlich nichts drinsteht wird 'voll'
angezeigt. Woran liegt das?

  1. Hallo Stefan.

    ich möchte feststellen ob ein Element wie dieses:
    <div id="info"></div>
    einen Inhalt hat oder nicht:

    if (elm.innerHTML == "") // oder null
    {
      alert("leer");
    }
    else
    {
      alert("voll"):
    }

    Selbst wenn tatsächlich nichts drinsteht wird 'voll'
    angezeigt. Woran liegt das?

    Bist du dir *absolut* sicher, dass obiges HTML deinem Testfall entspricht und du nicht doch Whitespaces (Leerzeichen, Zeilenumbrüche, Tabs) zwischen den Tags hast?

    Alternativ könntest du im Übrigen auch die <http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes@title=lenght-Eigenschaft der childNodes-Knotenliste> überprüfen.

    Einen schönen Sonntag noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
  2. Morgäähn,

    ich möchte feststellen ob ein Element wie dieses:
    <div id="info"></div>
    einen Inhalt hat oder nicht:

    if (elm.innerHTML == "") // oder null
    {
      alert("leer");
    }
    else
    {
      alert("voll"):
    }

    Selbst wenn tatsächlich nichts drinsteht wird 'voll'
    angezeigt. Woran liegt das?

    also wenn dies der Original-Code ist, dann ersetz mal den ':' hinter alert("voll") durch ';' und sprich das div über seine ID an.
    In obigem Beispiel könnte deshalb immer "voll" ausgegeben werden, weil elm.innerHTML nicht existiert, und diese Bedingung somit immer falsch ist - ist jetzt aber nur eine Vermutung, da das "elm" ja bestimmt irgendwo definiert ist...

    Gruß,
    Arthur D.

    --
    >> So long, and thanks for all the fish. <<
  3. Hallo Stefan,

    abgesehen von dem Doppelpunkt, der schon bemerkt wurde, solltest du einfach ausgeben

    if (elm.innerHTML == "") // <-- if(!elm.innerHTML) waere schicker
    {
       alert("davor" + elm.innerHTML + "dahinter");
    }
    ...
    Dann weisst Du genau, woran du bist

    Gruß,

    Dieter

    1. Hallo Dieter.

      if (elm.innerHTML == "") // <-- if(!elm.innerHTML) waere schicker

      Es ist aber ein Unterschied, ob der Wert der innerHTML-Eigenschaft leer ist oder ob es die Eigenschaft unter Umständen gar nicht gibt.

      {

      alert("davor" + elm.innerHTML + "dahinter");
      }

        
      Ich bevorzuge folgendes:  
        
      `alert('"' + elm.innerHTML + '"');`{:.language-javascript}  
        
        
      Einen schönen Sonntag noch.  
        
      Gruß, Mathias  
      
      -- 
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“  
      [[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
      
      1. Hallo Mathias,

        Ich bevorzuge folgendes:
        alert('"' + elm.innerHTML + '"');

        Im wahren Leben wuerde ich das auch so machen. Aber das ist fuer den OP moeglicherweise nicht so leicht verstaendlich.

        Gruß,

        Dieter