[JavaScript] getElementsByTagName('input') -- Problem im FF

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] getElementsByTagName('input') -- Problem im FF

    Servus Gemeinde,

    ich hätte da mal gern ein Problem

    Ich hab mir da eine Funktion mit JS gebastelt, welche mir ein Inputfeld highlighte wenn es den Focus bekommt.

    Funktioniert auch alles wunderbar mittels document.getElementsByTagName('input')

    ABER ..........
    im IE wird das Input Feld für einen Dateiupload (<input type="file"> )
    angesprochen

    im Firefox hingegen passiert in diesem falle garnix

    ein alert(document.getElementsByTagName('input').type))
    gibt mir beim IE TEXT für Texteingabe und file bei Dateiuploads an

    FF gibt mir TEXT an aber bei Inputs für Dateiupload passiert garnix.


    Kann mir jemand da nen guten Ansatz oder Lösung nennen ??

    Merci

    Grüße aus dem Süden
    Freddy

  • #2
    Den Input Feldern IDs verpassen und dann via document.getElementById() darauf zugreifen??
    Du bist überigens der erste hier im Forum der gern ein Problem hätte
    ich hätte da mal gern ein Problem
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3


      byId kann ich leider nicht verwenden, da einige Inputs zur Laufzeit generiert werden und keine ID besitzen.
      und byName kann ich ned nehmen, weil alle inputs unterschiedliche benamungen haben.

      und vorallem geht es mir auch darum zu verstehen WARUM ff das nicht kapiert der olle Browser der ........

      ich hätte da mal gern ein Problem

      Lösungen hab ich ne ganze Menge, mir fehlen nur immer die passenden Probleme dazu

      Kommentar


      • #4
        Und was macht denn der FF wenn du versuchst so auf die Elemente zuzugreifen
        Code:
        alert(document.getElementsByTagName("input")[0].type);
        ?
        IDs könntest du natürlich auch bei dynamisch erstellten Elementen anfügen, das wäre wohl weniger das Problem.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Original geschrieben von jahlives
          Und was macht denn der FF wenn du versuchst so auf die Elemente zuzugreifen
          Code:
          alert(document.getElementsByTagName("input")[0].type);
          das gibt mir text und file aus ..........

          ?
          IDs könntest du natürlich auch bei dynamisch erstellten Elementen anfügen, das wäre wohl weniger das Problem.
          Gruss
          Jupp sicherlich, aber dat macht 1. umstand und zweitens hab ich mir in kopf gesetzt das nicht machen zu wollen, sondern herauszufinden warum es so ned geht

          I will ja was lernen daraus
          Zuletzt geändert von lordofchaos; 28.02.2008, 14:34.

          Kommentar


          • #6
            Und was macht denn der FF wenn du versuchst so auf die Elemente zuzugreifen?
            das gibt mir text und file aus ..........
            Ist doch genau was du wolltest. Oder verstehe ich dich jetzt komplett falsch?
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              jupp

              nur in der Funktion haut das irgendwie ned hin *grummel*
              kuck mal hier

              Code:
              function highlight(){
              
              inp = document.getElementsByTagName('input');
              
                      for (var i=0;i<inp.length;i++){
                      inp[i].onfocus=function(){           
                          defaultClass = this.className;
                          this.className="highlight";
                          }
                      inp[i].onblur=function(){
                          this.className=defaultClass;
                          }
                      }
              }

              Kommentar


              • #8
                Kann es sein, dass sich this auf das Objekt bezieht welches du in inp hast? Dann würde ich mal this[i] probieren
                nur in der Funktion haut das irgendwie ned hin *grummel*
                Wie wär's mit einer etwas konkreteren Fehlerbeschreibung? Btw: Die FireFox JS Konsole sagt nichts?
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  bei this[i] laufe ich in einen Fehler
                  (FF-Konsole this[i] has no properties )

                  bei der funktion als solches kann ich Dir keine Fehlerbeschreibung geben ........ es gibt keine.
                  JS-Konsole von FF zeigt nix an ..... es passiert nur einfach nix....

                  Kommentar


                  • #10
                    Und wenn du statt this inp[i] verwendest klappt es auch ned?
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      hab ich auch schon probiert.
                      Ebenso inp[i] has no properties

                      Kommentar


                      • #12
                        Wird function highlight() über ein Event aufgerufen (Focus)? this. erhält ja dann den Bezug zum aufrufenden Element, ist das von dir so gewollt?

                        Wie viele Elemente enthält inp denn? alert (inp.length);
                        Läuft die Schleife denn durch, hast du das mal getestet?

                        Nur damit ich dich richtig verstehe: Du willst ein input-Feld hervorheben, wenn es den Focus erhält? Das kannst du recht einfach erledigen, indem du this verwendest.

                        Vorsicht Pseudocode

                        Code:
                        // event registrieren
                        deinformular.addEventListener('focus',highlight,false);
                        deinformular.addEventListener('blur',normal,false);
                        
                        function highlight() {
                          alert (this.type); // zeige mir, welches Element den Event ausgelöst hat
                          this.className='highlight'; // setze Klassenname von aktuellem element
                        }
                        
                        function normal() {
                          this.className = 'normal';
                        }
                        mehr zu this und dem "Problem" mit Event kannst du hier nachlesen: http://www.quirksmode.org/js/this.html

                        Kommentar

                        Lädt...
                        X