4Danke
ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
520
520
EMPFEHLEN
-
27.05.11 13:41 #1
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:
Damit möchte ich einfach die Hintergrundfarbe eines Textfelds ändern, sobald etwas drinnen seht.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); } }
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? xDMeine 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)
-
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"; //} }
-
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.
-
27.05.11 14:45 #4
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)
-
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.aspxGeändert von Netzwerkidi (27.05.11 um 18:13 Uhr)
-
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.
Übung
-
27.05.11 15:12 #7
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)
-
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
.
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
Wieso es im Eclipse Browser funktioniert hat, kann ich dir auch nicht sagen.
-
27.05.11 15:48 #9
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 LeitmanMeine 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
-
[C#] Error 52 An object reference is required for the nonstatic field, method...
Von yellowspam im Forum .NET DatenverwaltungAntworten: 1Letzter Beitrag: 28.11.07, 09:40 -
Object required in IE6
Von yasukatakaya im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 27.08.07, 09:53 -
int zu String[] = Error: object type required, but int found
Von Tischtennisspieler im Forum JavaAntworten: 3Letzter Beitrag: 20.07.06, 13:18 -
Hintergrundfarbe wie ändern?
Von webteufel im Forum CSSAntworten: 5Letzter Beitrag: 27.07.05, 21:50 -
non-shared member required an object reference?
Von TheSmile im Forum .NET ArchivAntworten: 1Letzter Beitrag: 24.03.05, 19:53





Zitieren


Login





