bleicher: weiterführende Artikel zu object prototyping u.ä, gesucht

Grüße,
nach "normalen" konventionen haben ja <img> kein name eigenschaft, da ich diese aber gerne hätte, wollte ich den prototypen (wie hier mal empfohlen wurde) bearbeiten, nix da - Image.prototype.name="" klappt nciht.
wäre auch zu einfach - googeln führte bisher zu nix vernünftigem - 1000 links zu einem framework das prototype heißt, ein paar allgemeine, woraus ich aber nciht shclau werde, wie man html objekte bearbeitet.

kennt jemand eine gute referenz?

MFG
bleicher

--
__________________________-

FirefoxMyth
  1. Hi,

    nach "normalen" konventionen haben ja <img> kein name eigenschaft, da ich diese aber gerne hätte, wollte ich den prototypen (wie hier mal empfohlen wurde) bearbeiten, nix da - Image.prototype.name="" klappt nciht.

    Was heisst klappt nicht?

    Und was willst du eigentlich erreichen?

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Grüße,

      Was heisst klappt nicht?

      die Zeile

      Image.prototype.name="";

      erzeugt einen Fehler - Uncaught exception: TypeError: Cannot convert 'Image.prototype' to object

      Und was willst du eigentlich erreichen?

      ich brauche eine Eigenschaft außer id, die ich von JS Seite aus auswerten könnte - bei einem onClick.
      an sich geht das auch mit nur id, aber das ist alles andere als "sauber" -(der switch wird paar hundert zeilen lang mit dutzend if's) ich brauche ein weg objekte zu "gruppieren" bei einer Eigenschaft.
      Und da ich auch viele buttons habe, die name haben dürfen, wollte ich auch den img diese Eigenschaft verpassen.
      MFG
      bleicher

      --
      __________________________-

      FirefoxMyth
      1. Lieber bleicher,

        ich brauche eine Eigenschaft außer id, die ich von JS Seite aus auswerten könnte - bei einem onClick.

        http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#universaleigenschaften@title=className?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Grüße,
          daranhabe ich gedacht- aber dh ich müsste bei den gewollten objekten eine extra classe anhängen - zB sowas wie
          <img class="dieEchte dieInformation"> und ich habe echt meine zweiffel, ob sich das nachher über simples == prüfen lässt :/

          ich wollte das echt als notlösung  lassen - ist denn bearbeiten der
          "urobjekte" so schlimm?
          MFG
          bleicher

          --
          __________________________-

          FirefoxMyth
          1. Lieber bleicher,

            <img class="dieEchte dieInformation"> und ich habe echt meine zweiffel, ob sich das nachher über simples == prüfen lässt :/

            nicht mit simplem Vergleich, aber mit String.match(new RegExp("\b"+myClassName+"\b")) schon.

            ich wollte das echt als notlösung  lassen - ist denn bearbeiten der
            "urobjekte" so schlimm?

            Es gibt ja noch andere Universaleigenschaften neben className (siehe Link vorher)... Ist denn keine davon genehm?

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. [latex]Mae  govannen![/latex]

              <img class="dieEchte dieInformation"> und ich habe echt meine zweiffel, ob sich das nachher über simples == prüfen lässt :/

              nicht mit simplem Vergleich, aber mit String.match(new RegExp("\b"+myClassName+"\b")) schon.

              Das funktioniert nicht. Der backslash möchte verdoppelt werden : \b .

              var myClassName = "html"  
              var str = "self html forum"  
              var re1 = new RegExp("\\b"+myClassName+"\\b")  
              var re2 = new RegExp("\b"+myClassName+"\b")  
                
              alert(str.match(re1)) // "html"  
              alert(str.match(re2)) // null
              

              Ich habe jetzt nicht ausführlich getestet, ob \b auch bei Strings mit Umlauten, Unter- und Bindestrichen und sonstigen erlaubten Zeichen immer korrekt arbeitet, jedenfalls benutze ich

              new RegExp('(^|\\s)' + myClassName + '(\\s|$)')

              Wenn es nur um die Prüfung geht, ob ein Teilausdruck in einem String  vorhanden ist, ohne ggf. Ergebnisse auswerten zu wollen, würde sich test() anbieten.

              Cü,

              Kai

              --
              Resig is more like Javascript's Pee Wee Herman.  ;) (D.Mark in clj)
              Foren-Stylesheet Site Selfzeug JS-Lookup
              SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
              1. Lieber Kai345,

                String.match(new RegExp("\b"+myClassName+"\b"))

                Das funktioniert nicht. Der backslash möchte verdoppelt werden : \b .

                ich hätte besser ins Bett gehen sollen, als solchen Unsinn zu schreiben. Du hast natürlich Recht.

                jedenfalls benutze ich

                new RegExp('(^|\\s)' + myClassName + '(\\s|$)')

                Das tue ich im Grunde auch.

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
          2. Hallo,

            ist denn bearbeiten der "urobjekte" so schlimm?

            Schlimm nicht unbedingt, aber wie du gemerkt hast, funktioniert es nicht wirklich. Wenn ich mich recht erinnere, habe ich mal node.prototype erfolgreich erweitert, so dass jedes HTML-Element zusätzliche Eigenschaften bekam, aber der IE macht da nicht mit :(

            Für mich ist es gängige Praxis, dass ich DOM-Elemente nach Belieben erweitere, aber nicht allgemein per prototype, sondern nur die konkreten Elemente. Diese haben alle ein Attribut id, und es existiert im Script ein Objekt für jede id mit den weitern Eigenschaften/Methoden, die ihm dann mitgegeben werden.

            Im HTML:
            <img id="tollesBild" ...>

            JS:

            tollesBild: {  
              
              name:   "klickbar",  
              title:  "Mein Quietschentchen",  
              alt:    "Bild vom Quietschentchen",  
              onKotz: function() {this.className='dontDisplay';},  
              ...  
            }  
            
            

            Eigenschaften, die keine erlaubten Attribute sind (wie name für img), werden dann einfach zu JS-Objekteigenschaften und könne wie normale Attribute mit obj.eigenschaft angesprochen werden.
            Mit etwas Zusatzaufwand kann man auch selbstdefinierte Events kreieren und feuern, auf die das Element dann reagiert. Der Fantasie sind keine Genzen gesetzt...

            Gruß, Don P

            1. ist denn bearbeiten der "urobjekte" so schlimm?

              Schlimm nicht unbedingt, aber wie du gemerkt hast, funktioniert es nicht wirklich. Wenn ich mich recht erinnere, habe ich mal node.prototype erfolgreich erweitert, so dass jedes HTML-Element zusätzliche Eigenschaften bekam, aber der IE macht da nicht mit :(

              Der IE 8 schon, das hatten wir hier aber auch vor kurzem: http://forum.de.selfhtml.org/archiv/2010/2/t195412/#m1308106

              Eigenschaften, die keine erlaubten Attribute sind (wie name für img), ..

              Natürlich ist name ein erlaubtes Attribut, es wird auch bereits genutzt: http://de.selfhtml.org/javascript/objekte/images.htm#name

              Struppi.

              1. Hallo,

                Natürlich ist name ein erlaubtes Attribut, es wird auch bereits genutzt: http://de.selfhtml.org/javascript/objekte/images.htm#name

                Ach so, habe das nicht überprüft. Weil Bleicher im OP ja das Gegenteil behauptet hat, hab ich's ihm einfach mal geglaubt:

                nach "normalen" konventionen haben ja <img> kein name eigenschaft

                stimmt also gar nicht.

                habe ich mal node.prototype erfolgreich erweitert, so dass jedes HTML-Element zusätzliche Eigenschaften bekam, aber der IE macht da nicht mit :(
                Der IE 8 schon, das hatten wir hier aber auch vor kurzem: http://forum.de.selfhtml.org/archiv/2010/2/t195412/#m1308106

                Aha, interesant. Soll das heißen, dass der IE sich langsam zum Browser weiterentwickelt? ;) Schön wär's ja...

                Gruß, Don P

              2. Grüße,
                jetzt werde ich i.wo von neugier getrieben ^^ weitere suche ergab bisher - Image ist keine art an sich, sondern eine erweiterung eines Object- heißt das, ich könnte über contructor.prototype was erreichen?
                MFG
                bleicher

                --
                __________________________-

                FirefoxMyth
      2. Hi,

        Und was willst du eigentlich erreichen?

        ich brauche eine Eigenschaft außer id, die ich von JS Seite aus auswerten könnte - bei einem onClick.

        Und wo soll diese Eigenschaft herkommen?

        Da du das name-Attribut ansprichst, nehme ich an, du willst das im HTML-Code unterbringen?
        Dabei nützt dir prototypische Erweiterung von JS-Objekten aber herzlich wenig.

        an sich geht das auch mit nur id, aber das ist alles andere als "sauber" -(der switch wird paar hundert zeilen lang mit dutzend if's) ich brauche ein weg objekte zu "gruppieren" bei einer Eigenschaft.

        Bietet es sich dann nicht vielleicht eher an, die Bilder bereits im HTML zu gruppieren, in dem du sie dort in ein gruppierendes Element steckst?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Grüße,
          die "gruppierung" ist nicht semantisch - das sind "bedienelemnte" aka "tasten" - ich habe momentan input-buttons drin

          der punkt ist - momentan löse ich das so, dass onclick das body hat, und wenn das angecklickte name="klikabel" hat die ganze sache auch ausgewertet wird.
          nur - als ich versucht die img mit name im html unterzubrnigen, nutzte die abfrage nix - ich habe es genauer angesehen - der target des clicks hat einfach keine eigenschaft name.
          also obwohl es im text ist - wird es ignoriert - deswegen wollte ich das JS dazu zwingen, name bei img zu akzeptieren - bin ich komplett auf der falschen fährte?
          MFG
          bleicher

          --
          __________________________-

          FirefoxMyth
          1. Grüße,
            hab noch mal gaanz genau hingesehen - doch, es wird akzeptiert (nicht standartkonform, aber opera lässt mich das machen) kp as ich beim ersten versuch für mist gebaut habe^^ Dragonfly sei dank habe ichs doch noch gesehen^^

            das mit prototyping der html objekte wäöre aber dennoch interessant - ist es sooo schlimm?
            MFG
            bleicher

            --
            __________________________-

            FirefoxMyth
            1. Hi,

              das mit prototyping der html objekte wäöre aber dennoch interessant - ist es sooo schlimm?

              das JavaScript-Objekt Image hat nichts mit dem HTML-Element <img> zu tun. Würdest Du den richtigen Objekttypus wählen, würde das aber weder die HTML-Regelungen verändern, noch den Umgang von DOM-Objekten mit Attributen und Eigenschaften. Sprich: Das Prototyping der DOM-Objekte hat mit Deinem Problem nicht das geringste zu tun - der Beweis ist, dass Dein Vorhaben offenbar klappt, obwohl Du noch kein einziges DOM-Objekt prototypisch verändert hast.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
          2. Hi,

            der punkt ist - momentan löse ich das so, dass onclick das body hat, und wenn das angecklickte name="klikabel" hat die ganze sache auch ausgewertet wird.
            nur - als ich versucht die img mit name im html unterzubrnigen, nutzte die abfrage nix - ich habe es genauer angesehen - der target des clicks hat einfach keine eigenschaft name.

            Na ja, nicht jedes Phantasie-Attribut, das man im HTML unterbringt, wird automatisch zu einer Eigenschaft der JS-Repräsentation des HTML-Elements.

            Über getAttribute("attributname") darauf zuzugreifen, sollte aber eigentlich in allen verbreiteten Browsern funktionieren.

            Das ist schliesslich ein Weg, den man heute schon gehen kann, um in Browsern, die noch kein HTML5 verstehen, auf custom data attributes zuzugreifen.
            (HTML5 und dann solche Attribute zu nutzen, würde ich auch empfehlen - damit lässt sich das ganze auch heute schon valide umsetzen.)

            also obwohl es im text ist - wird es ignoriert - deswegen wollte ich das JS dazu zwingen, name bei img zu akzeptieren - bin ich komplett auf der falschen fährte?

            Mit Prototyping - ja. Das findet in der JS-Welt statt, veranlasst aber nicht den Browser dazu, HTML-Elemente anders zu interpretieren.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Grüße,
              super^^ das ist auch definitiv HTML5 was ich hier nutze - bzw die tollen neuen inputes :P
              und dnake für den link - ich suche derzeit gern html5 turotials^^
              MFG
              bleicher

              --
              __________________________-

              FirefoxMyth