Sympatisant: Elternelement ausblenden

Hallo allerseits,

folgendes Szenario:

  
<p>  
  <label></label>  
</p>  

Besitzt das Label-Element die Moeglichkeit, sich bzw. sein _uebergeordnetes_
Elternelement auszublenden - also dass das P-Element nicht sichtbar wird?

Gruss & Danke!

MfG,
Sympatisant

--
"Non dura iubeantur, non prohibeantur inpura."
  1. @@Sympatisant:

    Besitzt das Label-Element die Moeglichkeit, sich

    Ja.

    bzw. sein _uebergeordnetes_ Elternelement auszublenden

    Nein. (Es sei denn mit JavaScript.)

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    1. Salvete,

      Danke fuer deine Antwort!

      Ja.

      Schade.

      Nein. (Es sei denn mit JavaScript.)

      OK. Nochmal ausgehend von dem Beispiel:

        
      <p>  
        <label>dummy</label>  
      </p>  
      <br>  
      
      

      Ich habe es bereits geschafft, dass der Paragraph entfernt wird
      (mittels removeChild). Nun wuerde ich gerne das darauffolgende
      BR auch noch entfernen.
      Ich habe so etwas wie "nextSibling" gefunden, was in meinem Falle
      jedoch null ausliefert.
      Ausgehend von dem Label (oder dem Paragraphen), was fuer eine
      Moeglichkeit gibt es da, an - aus der DOM-Hirarchie betrachtet -
      das naechste Element, also dem BR, zu gelangen?

      Kannst du mir da auf die Spruenge helfen?

      Danke.

      MfG,
      Sympatisant

      --
      "Non dura iubeantur, non prohibeantur inpura."
      1. @@Sympatisant:

        Ich habe es bereits geschafft, dass der Paragraph entfernt wird
        (mittels removeChild). Nun wuerde ich gerne das darauffolgende
        BR auch noch entfernen.
        Ich habe so etwas wie "nextSibling" gefunden, was in meinem Falle
        jedoch null ausliefert.

        Nachdem du das 'p'-Element aus dem Elementbaum entfernt hast, kannst du natürlich nicht mehr auf dessen (ehemalige!) Geschwister zugreifen.

        Was ist denn aber dein eigentliches Problem?

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
        1. Salvete,

          Nachdem du das 'p'-Element aus dem Elementbaum entfernt hast, kannst du
          natürlich nicht mehr auf dessen (ehemalige!) Geschwister zugreifen.

          Da habe ich mich anscheinend falsch ausgedrueckt. Natuerlich versuche ich
          _vor_ dem Loeschen das Element zu bekommen.

          Was ist denn aber dein eigentliches Problem?

          Mein Problem ist, dass ich mit Code arbeite, denn ich nicht editieren kann (Java+Velocity).
          Du kannst dir das in etwa so vorstellen:

            
          <p>  
            #buildLabel($property $label ..)  
          </p>  
          <br>  
          
          

          Die Methode buildLabel liefert, abhaengig von den jeweiligen Rechten des
          Benutzers, entwerder das entsprechende Label-Tag, oder aber nichts zurueck.
          Und im letzten Falle entsteht dadurch eine Leerzeile bzw. eine weisse
          Flaeche (da das P-Element eine gewisse Heohe besitzt).
          Mein Ziel ist es, eben diese Bereich zu entfernen.
          Was das <p> angeht, so war ich ja schon erfolgreich. Nun soll aber auch
          noch das zugehoerige <br> entfernt werden - aus dem selben Grund wie
          bereits oben beschrieben.

          Da die Methode buildLabel einen Event feuert, an den ich recht gut andocken
          kann, waehlte ich nun die Variante mit dem JavaScript.

          MfG,
          Sympatisant

          --
          "Non dura iubeantur, non prohibeantur inpura."
          1. @@Sympatisant:

            Mein Problem ist, dass ich mit Code arbeite, denn ich nicht editieren kann (Java+Velocity).
            Du kannst dir das in etwa so vorstellen:

            <p>
              #buildLabel($property $label ..)
            </p>
            <br>

              
            So richtig vorstellen kann ich mir das nicht. Welchen Code kannst du ändern, welchen nicht?  
              
            Wenn du JavaScript einfügen kannst, kannst du also den HTML-Code ändern?  
              
            Das 'br'-Element dürfte da reichlich unsinnig sein. Was soll das bezwecken?  
              
              
            
            > (da das P-Element eine gewisse Heohe besitzt).  
              
            ?? Warum tut es das? Setze doch margin und padding auf 0 und gib stattdessem dem 'label'-Element etwas margin.  
              
            Live long and prosper,  
            Gunnar
            
            -- 
            [Erwebsregel](http://memory-alpha.org/de/wiki/Erwerbsregeln_der_Ferengi) 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
            
            1. Salvete,

              So richtig vorstellen kann ich mir das nicht. Welchen Code kannst du
              ändern, welchen nicht?

              Den Code, den die Methoden zurueckliefert und eingentlich auch den Code
              mit den <p> und <br> Tags.

              Wenn du JavaScript einfügen kannst, kannst du also den HTML-Code ändern?

              Jein. Der Code wird zum groessten Teil von einer Software generiert. Und
              da komme ich nicht ran bzw. ist es die Anforderung.

              Das 'br'-Element dürfte da reichlich unsinnig sein. Was soll das
              bezwecken?

              Das <p>-Element wird gefloatet. Zugegeben, das p-Tag wird vllt. ein wenig
              missbraucht. Stell dir einfach vor es waere ein DIV ;)

              (da das P-Element eine gewisse Heohe besitzt).
              ?? Warum tut es das? Setze doch margin und padding auf 0 und gib
              stattdessem dem 'label'-Element etwas margin.

              Wie oben bereits geschrieben kann ich nur maginal etwas aendern.
              Deine Bemuehung, dass _eigentliche_ Problem zu eroertern, ist nett
              gemeint. Doch das, was mir jetzt nuetzen wuerde, waere eigentloch nur
              die Sache mit dem Auslesen des BRs mittels Javascript.
              Und ich wundere mich, warum ich da nicht drankomme.

              Danke!

              MfG,
              Sympatisant

              --
              "Non dura iubeantur, non prohibeantur inpura."
              1. @@Sympatisant:

                Doch das, was mir jetzt nuetzen wuerde, waere eigentloch nur
                die Sache mit dem Auslesen des BRs mittels Javascript.
                Und ich wundere mich, warum ich da nicht drankomme.

                Warum willst du das auch?

                Sorge mit CSS dafür, dass <p></p><br /> keinen unerwünschten Abstand erzeugt!

                Für den Fall <p><label></label></p><br /> bekommt das 'label'-Element den erwünschten Abstand.

                Dann sollte es unnötig sein, mit JavaScript aus dem Elementbaum was rauszunehmen.

                Live long and prosper,
                Gunnar

                --
                Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                1. Salvete,

                  Warum willst du das auch?

                  Ich dachte das haette ich dir jetzt ausfuehrlich erklaert.

                  Sorge mit CSS dafür, dass <p></p><br /> keinen unerwünschten
                  Abstand erzeugt!

                  Wie kann ich denn sagen, dass ein <br> nach einem leerem <p> _keinen_
                  Abstand  erzeugen soll?

                  Für den Fall <p><label></label></p><br /> bekommt das 'label'-
                  Element den erwünschten Abstand.

                  Wie kann ich denn sagen, dass ein <br> nach einem nicht leeren <p>
                  _einen_ Abstand  erzeugen soll?

                  Dann sollte es unnötig sein, mit JavaScript aus dem Elementbaum was
                  rauszunehmen.

                  Wie gesagt, wenn das o.g. irgendwie per CSS definiert werden kann, dann
                  gebe ich dir durchaus recht und wuerde mich dessen auch freuen ;-)

                  MfG,
                  Sympatisant

                  --
                  "Non dura iubeantur, non prohibeantur inpura."
                  1. @@Sympatisant:

                    Warum willst du das auch?
                    Ich dachte das haette ich dir jetzt ausfuehrlich erklaert.

                    Ich dachte, ich hätte ausführlich erklärt, was du stattdessen tun kannst. Nämlich:

                    Sorge mit CSS dafür, dass <p></p><br /> keinen unerwünschten
                    Abstand erzeugt!

                    Wie kann ich denn sagen, dass ein <br> nach einem leerem <p> _keinen_
                    Abstand  erzeugen soll?

                    p {margin-bottom: 0}  
                    br {display: none}
                    

                    Für den Fall <p><label></label></p><br /> bekommt das 'label'-
                    Element den erwünschten Abstand.
                    Wie kann ich denn sagen, dass ein <br> nach einem nicht leeren <p>
                    _einen_ Abstand  erzeugen soll?

                    Nicht das 'br' soll den Abstand erzeugen, sondern 'label'. Sagte ich doch gerade.

                    gebe ich dir durchaus recht und wuerde mich dessen auch freuen ;-)

                    Und, hüpfst du jetzt im Kreis?

                    Live long and prosper,
                    Gunnar

                    --
                    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                    1. Hallo Gunnar,

                      Sorge mit CSS dafür, dass <p></p><br /> keinen unerwünschten
                      Abstand erzeugt!
                      Wie kann ich denn sagen, dass ein <br> nach einem leerem <p> _keinen_
                      Abstand  erzeugen soll?

                      p {margin-bottom: 0}

                      br {display: none}

                      Wie ich ein BR ausblenden kann ist mir durchaus bewusst. Wie ich schrieb  
                      geht es doch darum, dass das BR nur dann ausgeblendet werden soll, wenn  
                      in dem voranstehenden <p> kein <label> vorhanden ist. Sobald eines  
                      vorhanden ist, soll es durchaus angezeigt werden.  
                      Das hatte ich bereits erklaert... und mich gewundert, dass es laut deiner  
                      Aussgae moeglich waere. Ich hatte schon so etwas befuerchtet.  
                        
                      
                      > Nicht das 'br' soll den Abstand erzeugen, sondern 'label'. Sagte  
                      > ich doch gerade.  
                      
                      Gunnar, du tust so, als ob ich dich nicht verstehen \_moechte\_.  
                      Dem ist nicht so, ich bin fuer deine Antworten dankbar und moechte mein  
                      Problem natuerlich gerne loesen.  
                        
                      
                      > > gebe ich dir durchaus recht und wuerde mich dessen auch freuen ;-)  
                      > Und, hüpfst du jetzt im Kreis?  
                      
                      Vielleicht habe ich das ja jetzt falsch verstanden, aber ich finde deinen  
                      Zynismus ehrlich gesagt unangebracht.  
                        
                        
                      MfG,  
                      Sympatisant
                      
                      -- 
                      "Non dura iubeantur, non prohibeantur inpura."
                      
                      1. @@Sympatisant:

                        Wie ich schrieb geht es doch darum, dass das BR nur dann ausgeblendet werden soll, wenn in dem voranstehenden <p> kein <label> vorhanden ist.

                        Wie du schriebst, geht es dir um irgendeinen Abstand.

                        'br' nur unter bestimmten Bedingungen auszublenden, war dein Ansatz, dein Problem zu lösen. Vermutlich nicht der beste, wie ich schon schrieb.

                        Sobald eines vorhanden ist, soll es durchaus angezeigt werden.

                        Warum sollte denn das 'br' dann angezeigt werden, wenn ein 'label' vorhanden ist?

                        Vielleicht habe ich das ja jetzt falsch verstanden

                        Vermutlich.

                        aber ich finde deinen
                        Zynismus ehrlich gesagt unangebracht.

                        Von Zynismus war hier keine Spur. (Und du kannst mir glauben, dass ich durchaus wirklich zynisch sein kann, wenn ich will.)

                        Live long and prosper,
                        Gunnar

                        --
                        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                        1. Salvete,

                          Warum sollte denn das 'br' dann angezeigt werden, wenn ein 'label'
                          vorhanden ist?

                          Damit ein Zeilenumbruch erfolgt. Und nein, ich kann nicht das label auf
                          display:block oder sonst etwas setzen, da es vorkoammen kann, dass
                          mehrere Labels in einer Zeile dargestellt werden sollen.
                          Ob ein Umbruch erfolgt oder nicht, das wird aus dem System heraus
                          definiert. Und nein, ich kann daran nichts aendern!

                          Von Zynismus war hier keine Spur. (Und du kannst mir glauben,
                          dass ich durchaus wirklich zynisch sein kann, wenn ich will.)

                          Naja, das liegt im Auge des betrachters. Hoeflich war es auf jeden
                          Fall nicht.

                          Wie auch immer, ich glaube wir kommen hier nicht auf einen gemeinsamen
                          Nenner. Wie gesagt, es ist nett dass du das Problem an der Wurzel
                          anpacken moechtest, doch bringt mich das einfach nicht weiter.
                          Ich habe dir bereits geschrieben, dass ich wenig am Code aendern kann
                          und es fuer mich die beste Loesung waere, dass <br> mittels Javascript
                          zu entfernen. Dass ich mich dafuer staendig rechtfertigen muss, sehe ich
                          einfach nicht ein. Ich bin nicht bloed - es hat schon seinen Sinn.

                          Moechtest du mir noch helfen, dann kannst du gerne deinen Teil zu der
                          eigentlichen JavaScript-Frage  - welche nun bereits 4 Stunden her ist -
                          beitragen. Aber bitte nicht wieder fragen warum dies und warum das.
                          Nicht falsch verstehen, aber das wird mir fuer so eine verhaeltnismaessig
                          einfache Frage einfach zu viel.

                          Dennoch Besten Dank, Gunnar.

                          MfG,
                          Sympatisant

                          --
                          "Non dura iubeantur, non prohibeantur inpura."
                          1. @@Sympatisant:

                            Warum sollte denn das 'br' dann angezeigt werden, wenn ein 'label'
                            vorhanden ist?
                            Damit ein Zeilenumbruch erfolgt.

                            ?? Zeilenumbruch? Den Effekt erledigt doch das 'p'-Element.

                            Naja, das liegt im Auge des betrachters. Hoeflich war es auf jeden
                            Fall nicht.

                            ?? Ich hatte dein Problem (wie du es beschreiben hattest) gelöst und höflich nachgefragt, ob du dich darüber freust.

                            Live long and prosper,
                            Gunnar

                            --
                            Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                            1. Salvete,

                              ?? Zeilenumbruch? Den Effekt erledigt doch das 'p'-Element.

                              Ich hatte ja gesagt, dass ich <p> habe floaten lassen.
                              Und wie ich gerade hopsel schrieb, habe ich es nun durch ein <span>
                              ersetzt (natuerlich ohne irgendein anderes Ergebnis).

                              ?? Ich hatte dein Problem (wie du es beschreiben hattest) gelöst und
                              höflich nachgefragt, ob du dich darüber freust.

                              OK. Das ist das Problem bei schriftlichen Diskussionen - da kommt oefter
                              einfach mal etwas falsch an.

                              Fazit: "Ich bin so klug als wie zuvor". ;-(

                              Aber danke euch fuer eure Hilfe. Anscheinend kann ich nicht genau
                              erklaeren, was ich ueberhaupt moechte. (Obwohl es fuer mich, lese ich
                              die vorangegangenen Beitraege noch einmal durch, eigentlich durchaus
                              logisch erscheint ;-)

                              MfG,
                              Sympatisant

                              --
                              "Non dura iubeantur, non prohibeantur inpura."
                      2. Hi Sympatisant!

                        Wie ich ein BR ausblenden kann ist mir durchaus bewusst. Wie ich schrieb
                        geht es doch darum, dass das BR nur dann ausgeblendet werden soll, wenn
                        in dem voranstehenden <p> kein <label> vorhanden ist. Sobald eines
                        vorhanden ist, soll es durchaus angezeigt werden.

                        Wozu denn?

                        Wenn du außer

                        p {margin-bottom: 0}  
                        br {display: none}
                        

                        noch
                        label {margin-bottom:1em}
                        benutzt, wird der gewünschte Zeilenabstand doch automatisch erzeugt, (und zwar nur) wenn das Label im Code steht.

                        Nichts anderes wolltest du doch?!

                        MfG H☼psel

                        --
                        "It's amazing I won. I was running against peace, prosperity, and incumbency."
                        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                        1. Salvete,

                          danke fuer deine Antwort.

                          Wie ich bereits Gunnar geschrieben habe, soll das <br> natuerlich
                          einen Zeilenumbruch bewirken. Das dem Label mitzugeben, funktioniert nicht,
                          dass durchaus mehrere Labels nebeneinander vorkommen koennen.
                          Und ob nach einem Label ein Zeilenumbruch geschehen soll oder nicht (btw:
                          es handelt sich nicht nur um Labels, sondern auch um Eingabefelder u.ae. -
                          das habe ich der Einfachheit wegen nicht erzaehlt), dass bestimmt die
                          andere Software.
                          Und, wie bereits erwaehnt, kann die entsprechende Methode
                          <p> #blablub </p> <br>
                          auch mal _nichts_ zurueckliefern. Und in diesem Falle soll weder das <p>,
                          noch das <br> sich auch nur irgendwie auf die Darstellung auswirken.

                          Und, damit es nicht wieder falsch verstanden wird: nein, das <br>
                          kann ich nicht entfernen (nicht ohne JavaScript, daher meine Frage)!

                          MfG,
                          Sympatisant

                          --
                          "Non dura iubeantur, non prohibeantur inpura."
                          1. Hi Sympatisant!

                            Und ob nach einem Label ein Zeilenumbruch geschehen soll oder nicht (btw:
                            es handelt sich nicht nur um Labels, sondern auch um Eingabefelder u.ae. -
                            das habe ich der Einfachheit wegen nicht erzaehlt), dass bestimmt die
                            andere Software.

                            Den Zeilenumbruch hast du ja bei dem <p> so oder so dabei.
                            Es blieb eigentlich nur noch die Frage, wie du die größe des Abstandes nach unten bestimmen kannst.

                            Ein einfaches Mittel wäre das letzte Kindelement von p zu selektieren und den gewünschten Abstand einzustellen.
                            Also:
                            p *:last-child {margin-bottom:1em}

                            Das ist wesentlich eleganter als irgendwelches JavaScript-Gedöns.

                            Wir wollten doch nur helfen... ;-)

                            MfG H☼psel

                            --
                            "It's amazing I won. I was running against peace, prosperity, and incumbency."
                            George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                            Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                            1. Hallo,

                              Den Zeilenumbruch hast du ja bei dem <p> so oder so dabei.

                              Naja, ich hatte das <p> gefloatet, und von daher keinen Zelenumbruch.
                              Das <p> habe ich jetzt jedoch durch <span> ersetzt, das erscheint mir
                              logischer.
                              Und wie gesagt sollen auch mehrer Elemente in einer Zeile hintereinander
                              gestellt werden. Mit Zeilumbruch geht das natuerlich nicht.
                              Ich erwaehnte ja bereits, dass der Anwender der Fremdsoftware bestimmt,
                              wann ein Eintrag in eine neue Zeile gestellt werden soll. Er wird dort
                              dann den entsprechenden <span>-Bereich mit einem abschliessenden <br>
                              versehen.

                              Ein einfaches Mittel wäre das letzte Kindelement von p zu selektieren und
                              den gewünschten Abstand einzustellen.
                              p *:last-child {margin-bottom:1em}

                              Laut meinem Wissensstand funktioniert das doch nur im FF?

                              Wir wollten doch nur helfen... ;-)

                              Ja, das weiss ich ja. ;-)

                              MfG,
                              Sympatisant

                              --
                              "Non dura iubeantur, non prohibeantur inpura."
                              1. Hi Sympatisant!

                                p *:last-child {margin-bottom:1em}
                                Laut meinem Wissensstand funktioniert das doch nur im FF?

                                Ja. Aber vielleicht kennst du ja das letzte Element und kannst es direkt ansprechen. War nur zu faul, dass so auszuschreiben. ;-)

                                Funktioniert das nun mit dem JavaScript eigentlich?

                                MfG H☼psel

                                --
                                "It's amazing I won. I was running against peace, prosperity, and incumbency."
                                George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                                Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                                1. Hallo.

                                  p *:last-child {margin-bottom:1em}
                                  Laut meinem Wissensstand funktioniert das doch nur im FF?
                                  Ja.

                                  Nein.
                                  MfG, at

                          2. Wie ich bereits Gunnar geschrieben habe, soll das <br> natuerlich
                            einen Zeilenumbruch bewirken.

                            Ein alleinstehendes BR ist immer ein Zeichen davon, dass das CSS ungünstig ist. Sowas wird i.d.R. nicht benötigt und ich kann mir das anhand deiner Schilderungen nicht vorstellen dass es wirklich nötig ist. Du versuchst momentan ein Symptom zu bekämpfen, anstatt der Ursache auf den Grund zu gehen.

                            Struppi.

                            1. Hallo.

                              Ein alleinstehendes BR ist immer ein Zeichen davon, dass das CSS ungünstig ist.

                              Wenn nicht gar das HTML.

                              Sowas wird i.d.R. nicht benötigt und ich kann mir das anhand deiner Schilderungen nicht vorstellen dass es wirklich nötig ist. Du versuchst momentan ein Symptom zu bekämpfen, anstatt der Ursache auf den Grund zu gehen.

                              Was ist an der Aussage

                              Mein Problem ist, dass ich mit Code arbeite, denn ich nicht editieren kann

                              denn so unverständlich und wurde nicht auf Nachfrage folgendermaßen beantwortet?

                              Der Code wird zum groessten Teil von einer Software generiert. Und da komme ich nicht ran bzw. ist es die Anforderung.

                              MfG, at

      2. Hi Sympatisant!

        Ich habe es bereits geschafft, dass der Paragraph entfernt wird
        (mittels removeChild). Nun wuerde ich gerne das darauffolgende
        BR auch noch entfernen.
        Ich habe so etwas wie "nextSibling" gefunden, was in meinem Falle
        jedoch null ausliefert.
        Ausgehend von dem Label (oder dem Paragraphen), was fuer eine
        Moeglichkeit gibt es da, an - aus der DOM-Hirarchie betrachtet -
        das naechste Element, also dem BR, zu gelangen?

        Wenn du das leere <p></p> gefunden hast, kannst du mit removeChild([ParagraphKnoten].nextSibling.nextSibling) das <br> entfernen.
        Im DOM-Baum sind Zeichen zwischen den Tags ebenfalls Knoten, also auch Whitespaces.

        Ich hoffe, das hilft dir. =)

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)