tutorials.de Buch-Aktion 05/2012
Like Tree4Danke
  • 1 Beitrag von Netzwerkidi
  • 2 Beitrag von CPoly
  • 1 Beitrag von CPoly
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
520
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    Ich habe erst kürzlich angefangen, mich mit HTML und JavaScript zu beschäftigen...
    und schon stoße ich auf die ersten Probleme -.-

    In einer JavaScript Methode habe ich nun testweise versucht, die Hintergrundfarbe eines Elements zu ändern.
    Das Ganze sieht folgendermaßen aus:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    function updateButton() 
    {
        var txt="";
        try
        {
            alert("called JS onchangeEvent!");
            label = document.getElementById("username");
            alert("..got label");
            if (label.value != null && label.value != "")
            {
                //label.style.backgroundColor="white";
                            //document.getElementById("username").style["backgroundColor"]="white";
                document.getElementById("username").style.backgroundColor="white";
                alert("..changed bg");
            }
        }
        catch (err)
        {
            txt="There was an error on this page.\n\n";
            txt+="Error description: " + err.description + "\n\n";
            txt+="Click OK to continue.\n\n";
            alert(txt);
        }
    }
    Damit möchte ich einfach die Hintergrundfarbe eines Textfelds ändern, sobald etwas drinnen seht.

    Aufgerufen wird die Methode so:
    Code javascript:
    1
    
    <input name="username" type="text" value="" style="background:#F8E0E0" size="38" onchange="updateButton()"/>

    Wenn ich das Ganze unter Eclipse starte (auf Tomcat) funktioniert das alles einwandfrei:
    Textfeld leer -> rosa Hintergrund
    Text vorhanden -> weiß

    Doch unter Chrome, FF4 und IE8 funktioniert das nicht? o.O

    Lediglich beim IE bekomme ich eine Fehlermeldung:
    "There was an error on this page.

    Error description: Object required

    Click OK to continue"

    in Chrome 11 steht bei der Fehlerbeschreibung lediglich "undefined",
    genauso im FF 3.6.16


    Was mache ich falsch? Warum geht das nicht? xD
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  2. #2
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Du hast statt id="username" name="username" geschrieben bei dem input-Field.

    Die Funktion klappt sonst auf meinen Browsern. Kannste ja mal testen.


    Code :
    1
    2
    3
    4
    5
    6
    
    function updateButton() {
        c = document.getElementById("userName");
        //if (!c=="") {
           c.style.backgroundColor="white";
        //}
      }
    the incredible Leitman bedankt sich. 

  3. #3
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Neben dem von Netzwerkdidi angesprochenen Fehler mit id/name kann man das ganze auch noch komprimieren

    HTML-Code:
    <input name="username" type="text" value="" style="background:#F8E0E0" size="38" onchange="updateButton.call(this)" />
    Code javascript:
    1
    2
    3
    4
    
    function updateButton() 
    {
        this.style.backgroundColor = (this.value.length) ? 'white' : '#F8E0E0' ;
    }

    Du solltest den try-catch Block auch nicht einfach irgendwo hinsetzen. So ist dir nämlich scheinbar die Fehlermeldung entgangen, dass du eben id und name vertauscht hattest. Im Prinzip braucht man try-catch für die Standardsachen nie.
    the incredible Leitman und Netzwerkidi bedanken sich. 

  4. #4
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    OMG xD

    Danke Netzwerkidi xD
    Und ich such mich seit Stunden zum Deppen -.-

    Hätte ich mir ja denken können, dass es was einfaches ist... wenn man die id richtig setzt, nach der man sucht, klappt das natürlich auch

    Danke dir


    EDIT:
    @CPoly:
    Danke dir auch, für deine Meldung
    Den try-catch Block habe ich eben nur für Testzwecke eingebaut, weil es eben nicht ging und ich nicht wusste, warum.
    Doch was meinst du mit "irgendwo hin"?

    Danke für die kürzere Schreibweise
    Geändert von the incredible Leitman (27.05.11 um 14:49 Uhr)
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  5. #5
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    CPoly, also Du hast es schon drauf, das muss ich neidlos anerkennen!

    Nur warum noch das Call dabei und nicht direkt der Aufruf?
    Weil der Button nicht das Input-Feld ist?

    Na ja, ich habe noch etwas gefunden dazu, wo Call, Apply usw. gut erklärt werden:
    http://odetocode.com/blogs/scott/arc...avascript.aspx
    Geändert von Netzwerkidi (27.05.11 um 18:13 Uhr)
     

  6. #6
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von the incredible Leitman Beitrag anzeigen
    Doch was meinst du mit "irgendwo hin"?
    Du hast den Block um ein "gewöhnliches" Stück Code gepackt wo nichts besonderes passiert oder nichts, was man nicht erwarten könnte. Der try-catch Block ist eher dafür gedacht Sachen abzufangen, die schief gehen können. In JavaScript wird der eher selten benutzt. Angenommen du hast eine Klasse und wirfst dort in einer Methode (via "throw") bewusst eine Exception (oder du benutzt eine Klasse von jemandem), dann musst du die natürlich beim Aufruf abfangen.
    Es gibt eben einen Unterschied zwischen Fehlern die der Programmierer macht (wie du eben mit dem vertauschen von name und id) und Fehler, die zum Programm gehören und je nach aüßeren Umständen passieren können (z.B. bei ajax eine fehlerhafte Verbindung). Erstere willst du ja während der Entwicklung mitbekommen und beheben.


    Zitat Zitat von Netzwerkidi Beitrag anzeigen
    CPoly, also Du hast es schon drauf, das muss ich neidlos anerkennen!
    Übung
     

  7. #7
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    ah ok, danke für diese ausführliche Erklärung

    Wie gesagt, das exception handling habe ich bloß eingeführt um eventuell zu erkennen, warum meine function nicht geht :?

    Daraus erschließt sich mir eh die Frage...
    warum habe ich dann keine anständige Fehlermeldung bekommen a'la "Element mit id... nicht gefunden"?
    Das wär verdammt hilfreich gewesen ^.^
    bzw.... warum hat das überhaupt im Eclipse Browser funktionieren können********
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  8. #8
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von the incredible Leitman Beitrag anzeigen
    Wie gesagt, das exception handling habe ich bloß eingeführt um eventuell zu erkennen, warum meine function nicht geht :?
    Ohne try-catch landen alle Fehler in der Fehlerkonsole deines Browsers samt Zeilennummer. Das ist wesentlich komfortabler, als sich selbst im Code darum zu kümmern .

    Zitat Zitat von the incredible Leitman Beitrag anzeigen
    warum habe ich dann keine anständige Fehlermeldung bekommen a'la "Element mit id... nicht gefunden"?
    Das liegt daran, dass du dich selbst um die Fehlerabfrage gekümmert hast. Und dabei hast du "err.description" benutzt, was bei mir im Firefox nur "undefined" ausgibt. Hättest du "err.toString()" genommen, hättest du
    "TypeError: label is null" bekommen. Und daraus geschlossen, dass "getElementById" null zurück gibt.
    In der Fehlerkonsole haben ich und Netzwerkdidi das sofort gesehen und sogar die Zeile angezeigt bekommen

    Zitat Zitat von the incredible Leitman Beitrag anzeigen
    warum hat das überhaupt im Eclipse Browser funktionieren können********
    Wieso es im Eclipse Browser funktioniert hat, kann ich dir auch nicht sagen.
    the incredible Leitman bedankt sich. 

  9. #9
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    Aaaaah
    Jetzt geht mir ein Licht auf

    Vielen Dank, das hat mir echt weitergeholfen

    Ok, dann danke euch beiden recht herzlich,
    ich mach hier mal zu

    lg
    the incredible Leitman
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 28.11.07, 09:40
  2. Object required in IE6
    Von yasukatakaya im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 27.08.07, 09:53
  3. Antworten: 3
    Letzter Beitrag: 20.07.06, 13:18
  4. Hintergrundfarbe wie ändern?
    Von webteufel im Forum CSS
    Antworten: 5
    Letzter Beitrag: 27.07.05, 21:50
  5. non-shared member required an object reference?
    Von TheSmile im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 24.03.05, 19:53

Stichworte