Sandburg: Eingabefelder mit gleichem Namen?

Moin

ich habe in einem Formular einige Eingabe felder und möchte, dass die als Array an PHP übergeben werden. Kann ich deshalb allen den gleichen Namen geben, dalos zb. 'diefelder[]' oder haben Browser Probleme damit?

Bye the Sandburg

  1. Moin

    ich habe in einem Formular einige Eingabe felder und möchte, dass die als Array an PHP übergeben werden. Kann ich deshalb allen den gleichen Namen geben, dalos zb. 'diefelder[]' oder haben Browser Probleme damit?

    Bye the Sandburg

    hmm Ich habe in einem dynamisch erzeugtem HTML File etliche DIV Tags mit der gleichen ID.
    Die Browser nummerieren diese automatisch in einem Array durch, wie normale Tags auch.
    Ein Zugriff ist dann z.B. mit idname[5] möglich.
    Ich nehme mal an das eine Unterscheidung bei Eingabefeldern von den Browsern genauso gehandhabt wird.

    Grüsse Mho

    1. Hi,

      hmm Ich habe in einem dynamisch erzeugtem HTML File etliche DIV Tags mit der gleichen ID.

      Oh je.

      Die Browser nummerieren diese automatisch in einem Array durch, wie normale Tags auch.

      Also
       <div id="MassenID">0</div>
       <div id="MassenID">1</div>
       <div id="MassenID">2</div>
      ?

      Ein Zugriff ist dann z.B. mit idname[5] möglich.

      So a la alert(document.MassenID[1].innerHTML); gibt dann "1" aus? Und *das* soll in allen Browsern (na ja zumindest im IE, Mozilla, Opera und Konqueror) funktionieren? =:-o

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Also
        <div id="MassenID">0</div>
        <div id="MassenID">1</div>
        <div id="MassenID">2</div>
        ?

        So a la alert(document.MassenID[1].innerHTML); gibt dann "1" aus? Und *das* soll in allen Browsern (na ja zumindest im IE, Mozilla, Opera und Konqueror) funktionieren? =:-o

        Sagen wir mal ich habe es mit Mozilla un Internetexplorer getestet
        IE
        document.all.MassenID[i].style.display
        DOM
        document.getElementsByName("MassenID")[i].style.display

        COOL was?

        Die Browser können mehr als man denkt

        grüsse Mho

        1. Hi,

          Sagen wir mal ich habe es mit Mozilla un Internetexplorer getestet
          IE

          Dann fehlen noch 2 und es sind die wichtigsten aktuellen Browser abgedeckt - nicht natürlich zukünftige. :-)

          document.all.MassenID[i].style.display
          DOM
          document.getElementsByName("MassenID")[i].style.display

          Und dir fällt da nichts auf? :-o

          COOL was?

          Ja, ist häufig die jugendliche Bezeichnung für "leichtsinnig" ... :)

          Mit ca. 10 Jahren Web-Design auf dem Buckel (davon ca. 9 mit JavaScript), bin ich mit "cool" etwas vorsichtig. ;-)

          Die Browser können mehr als man denkt

          Nein, manche Brower sind vielleicht fehler- (und/oder standard-)toleranter als andere. Und eine browserübergreifende Zugriffsmöglichkeit auf diese üble Vergewaltigung des ID-Attributes sehe ich gerade auch nicht. =:-o

          Und da es dafür ohnehin keinen Anwendungszweck gibt (es gibt ja mehrere legale und auch halb-legale Alternativen, ohne HTML zu vergewaltigen), sollte man es auch besser getrost vergessen ... 8->

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. leichtsinnig?
            naja

            aber das jugentlich nehme ich mal als kompliment

            Das macht insgesammt aber schon Sinn und ist wohl auch keine Fehlertoleranz.

            Ich nehme mal an das alle Elemente als Array dargestellt werden.
            Das wird mit den Tags auch gerne verwendet.

            Den Schritt das auch ID Namen als Array verwaltet werden ist nicht so abwegig, da der Zugriff sicherlich äquivalent implementiert wurde.

            Einen Anwendungsfall hatte ich durchaus
            xsl Umwandlung einer XML bei der Blöcke erzeugt werden deren sichtbarkeit vom Beutzer an und ausgeschaltet werden kann.
            Die Id habe ich immer gleich erzeugt und konnte über das Array trotzdem auf einen Block zugreifen. Ohne über XSL die Blöcke in der ID durchnummerieren zu müssen. Das hätte ich sonst in den Eventfunktionen auch machen müssen, was recht unübersichtlich ist.
            So merke ich mir einfach eine Nummer im Javascript und habe in den Eventfunktionen die Variable stehen.
            Beispiel:
            <img id="name"  src="Bild.jpg" onclick="machwas();" onMouseover="funktion1('name[count]');" onMouseout="funktion2('name[count]');"

            Und für Netscape werde ich das auch noch austesten....
            Hatte noch keine Zeit.

            Grüsse Mho

            1. Hi,

              leichtsinnig?
              naja

              Kann funktionieren, kann auch nicht. Also ich finde das leichtsinnig. =:-)

              Na ja, war ja ohnehin nix mit "browserübergreifend" ...

              aber das jugentlich nehme ich mal als kompliment

              :-)) OK, Altersdemenz! ;->

              Das macht insgesammt aber schon Sinn und ist wohl auch keine Fehlertoleranz.

              Stimmt, eher "Fehlverhalten". Denn da wird das Verhalten des alten NAME-Attributs (W3C: nicht eindeutig -> getElementsByName) mit dem des (auch) als "Ersatz" vorgesehenen neuen ID-("Universal-")Attributs (W3C: eindeutig -> getElementByName - man beachte auch Einzahl/Mehrzahl) durcheinander gewürfelt. Meiner Erfahrung nach gibt es für dieses Durcheinanderwürfeln aber keine Browserübergreifend einheitliche Vorgehensweise (selbst Elementübergreifend klappt es nicht) ...

              Einen Anwendungsfall hatte ich durchaus

              Ich schrieb von *anderen* Lösungswegen ohne HTML zu vergewaltigen! =8-> Daß es Anwendungsfälle und somit Bedarf für eine Lösung gibt, ist schon klar. 8-)

              Du kannst z.B. nur auf Beginn der ID abfragen (id="name1", id="name2") oder in XML ein eigenes Atribut GID (Group-ID) definieren (welches von HTML-Browsern ignoriert, von deren XML-fähigen JS-Engines aber bearbeitet werden kann).

              Beide Varianten findest Du z.B. in http://Coding.vampirehost.de/Toggle, wo es eben genau um das Thema geht, wie man auf einen Schlag mehrere Elemente zugleich verarbeiten kann (jedenfalls was ihre Darstellung angeht).

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              1. Gut gut
                Ich habe mich mal durch die für diesen Fall relewanten Quellen gelesen

                W3c html 4.01 Spezifikation
                W3c xhtml spezifikation
                w3c dtd für xhtml im strict modus
                w3c DOM2 Spezifikation

                und ich kann nun sicher behaupten:

                Du hast recht.

                html 4.01 gibt für ID Namen eine Eindeutigkeit vor
                dom2 sagt folgendes:
                getElementById introduced in DOM Level 2
                Returns the Element whose ID is given by elementId. If no such element exists, returns null. Behavior is not defined if more than one element has this ID.

                Allerdings kann man noch erwähnen das die ATTLIST Einträge der DTD für XHTML strict das von ihrem Aufbau her nicht verbieten würden

                Aus XML Sicht wäre das also zulässig.
                Aus Browsersicht nicht.

                Immerhin funktioniert es und warum nicht ab und an etwas am script ändern? ... Solange das kein Kundenauftrag war.

                Wieder etwas dazu gelernt.

                grüsse Mho

                1. Hi,

                  Aus XML Sicht wäre das also zulässig.
                  Aus Browsersicht nicht.
                  Immerhin funktioniert es und warum nicht ab und an etwas am script ändern?

                  Mindestens der Opera wird die Grätsche machen ... 8-)

                  ... Solange das kein Kundenauftrag war.

                  Und wenn, wäre es immer noch deutlich besser, als was sonst mitunter so abgeliefert wird. >;->

                  Gruß, Cybaer

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!