Autor |
|
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Problem bei ANYPAGE
Geschrieben: 30.11.2006 00:16
DANKE, DAS WAR'S!
Nachdem ich mit Forms & Javascript noch nicht so bewandert bin, ist mir der kleine aber feine Unterschied (ID NAME) gar nicht aufgefallen.
Bitte schön! Wie ich ja bereits gesagt habe, dass man auch mal was übersehen kann.
Der Fehler hat mich nun Tage gekostet - und einigen hier auch - sorry.
Das ist jetzt nicht dein Ernst??? Wofür entschuldigst du dich, wenn du doch bereit bist Javascript zu lernen. Wie sagt man so schön: LEARNING BY DOING.
Wenn du noch irgendwelche Fragen oder Probleme zu JavaScript hast, dann melde dich einfach. Ich und auch andere im Forum werden dir dabei helfen.
Der IE dürfte in Ermangelung der ID dann wohl den Namen als "ID" interpretieren...
Sollte er eigentlich nicht. Aber wir wissen ja, dass er sehr oft gegen über den anderen Browsern aus der Reihe tanzt.
Gruß
Sebastian
|
 |
Gast
Unregistrierter Benutzer
|
Problem bei ANYPAGE
Geschrieben: 30.11.2006 00:04
DANKE, DAS WAR'S!
Nachdem ich mit Forms & Javascript noch nicht so bewandert bin, ist mir der kleine aber feine Unterschied (ID NAME) gar nicht aufgefallen.
Der Fehler hat mich nun Tage gekostet - und einigen hier auch - sorry.
Der IE dürfte in Ermangelung der ID dann wohl den Namen als "ID" interpretieren...
Ciao & Gute Nacht,
Boby [addsig]
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Problem bei ANYPAGE
Geschrieben: 29.11.2006 23:54
Offenbar bin ich zu blöd, um dem FF das beizubringen. Folgender Code funktionert unter dem IE ohne Probleme - und der FF (2.) ignoriert das display inline/none einfach - so als wär's gar nicht da:
...
Der abgefrage Radio-Button hat im onclick-Event den Aufruf "ShowFactor();" drinnen...
Wenn ich in den IF/ELSE-Zweig ein ALERT einbaue, wird es mir auch korrekt angezeigt - es liegt also nicht am IF-Konstrukt, sondern definitiv am Anzeigen/Verstecken der Elemente.
Warum geht's im FF nicht??? Ich bin schön langsam am Verzweifeln...
Hallo Boby,
nicht verzweifeln. Es gibt ja das Sprichwort: Man sieht vor lauter Bäume den Wald nicht mehr.
Auf deiner Seite: http://www.rc-boote.at/upload/boby/speedcalc2_multi.php
Da reagiert Firefox zu recht nicht auf diesen Javascript, weil es nämlich nicht weiß, was er ändern soll. (Der IE sollte normalerweise auch nicht darauf reagieren!!! Das regt mich wieder mal auf.)
Also, wenn wir einen Teil vom JavaScript-Befehl anschauen wie getElementById("F_PROP_FACTOR"), dann erkennt man das er ein Element abfragt, dessen ID = F_PROP_FACTOR ist und der nachfolgende Befehl (Node) wird das Element mit dieser ID gesteuert. Daher ist dein Script korrekt.
Schauen wir uns jetzt mal im Formular die Elemente an, die im Script angesprochen werden sollte.
...
<select size="1" name="F_PROP_FACTOR">
...
</select>
...
<input type="text" name="F_PROP_FACTOR_MM" size="3" value = "0">
...
In diesem Fall sehen wir, dass du für die Elemente keine ID gesetzt hast.
Angepasst auf dein JavaScript sollte der Code so lauten:
...
<select size="1" name="F_PROP_FACTOR" id="F_PROP_FACTOR">
...
</select>
...
<input type="text" name="F_PROP_FACTOR_MM" id="F_PROP_FACTOR_MM" size="3" value = "0">
...
Erst jetzt springt Firefox an, weil er auch die ID in diesem HTML-Dokument finden kann. Und das ist auch so korrekt, weil nachvollziehbar.  Alles andere wäre blödsinn. (Siehe IE)
Ich hoffe, es war soweit verständlich.
Schönen Abend noch.
Gruß
Sebastian
|
 |
Gast
Unregistrierter Benutzer
|
Problem bei ANYPAGE
Geschrieben: 29.11.2006 22:38
Offenbar bin ich zu blöd, um dem FF das beizubringen. Folgender Code funktionert unter dem IE ohne Probleme - und der FF (2.) ignoriert das display inline/none einfach - so als wär's gar nicht da:
<script type="text/javascript">
function ShowFactor()
{ if (document.SpeedForm.F_RADIO_PITCH[1].checked)
{
document.getElementById("F_PROP_FACTOR").style.display= 'none';
document.getElementById("F_PROP_FACTOR_MM").style.display = 'inline';
}
else
{
document.getElementById("F_PROP_FACTOR").style.display= 'inline';
document.getElementById("F_PROP_FACTOR_MM").style.display = 'none';
}
}
</script>
Der abgefrage Radio-Button hat im onclick-Event den Aufruf "ShowFactor();" drinnen...
Wenn ich in den IF/ELSE-Zweig ein ALERT einbaue, wird es mir auch korrekt angezeigt - es liegt also nicht am IF-Konstrukt, sondern definitiv am Anzeigen/Verstecken der Elemente.
Warum geht's im FF nicht??? Ich bin schön langsam am Verzweifeln...
Ciao,
Boby [addsig]
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Problem bei ANYPAGE
Geschrieben: 28.11.2006 23:44
Jetzt bin ich das letzte mal unverschämt und hoffe auf einen Tipp der Wep-Spezialisten:
style.display="none" funzt zwar im IE, aber nicht im Firefox - das habe ich auf einigen Seiten als Hinweis gefunden. Meine Versuche mit style.visibility=visible/hidden funktionieren im FF aber auch nicht - und im IE bleibt das Feld auf seinem Platz kleben wenn ich mit visibility arbeite - mit display rückt dagegen das zweite Feld auf den Platz des ersten - was mir besser gefallen würde.
Wie kann ich ein Element so verstecken/anzeigen, dass es im FF und IE gleich funktionert?
Ich habe folgenden JS-Code für IE/FF/Opera und co. verwendet.
1. Möglichkeit:
// Elemente sichbar machen
document.getElementById("idname").style.display='inline';
// Elemente verstecken
document.getElementById("idname").style.display='none';
2. Möglichkeit:
// Elemente sichbar machen
document.getElementById("idname").style.position='';
document.getElementById("idname").style.visibility='visible';
// Elemente verstecken
document.getElementById("idname").style.position='absolute';
document.getElementById("idname").style.visibility='hidden';
Du musst schauen, welcher von beiden JS-Codes dir eher deinem Vorhaben entspricht.
Gruß
Sebastian
|
 |
Gast
Unregistrierter Benutzer
|
Problem bei ANYPAGE
Geschrieben: 28.11.2006 22:48
Okay, jetzt habe es auch ich geschnallt, dass das onload nicht notwendig war. Ich hatte dummerweise den Aufruf meiner function VOR dem Aufbau der FORM drinnen - und deshalb hat die "initiale" Abschaltung nicht gefunzt; hab's nun ans Ende der Seite verlagert - und nun ist mein OnLoad-Problem gelöst.
Jetzt bin ich das letzte mal unverschämt und hoffe auf einen Tipp der Wep-Spezialisten:
style.display="none" funzt zwar im IE, aber nicht im Firefox - das habe ich auf einigen Seiten als Hinweis gefunden. Meine Versuche mit style.visibility=visible/hidden funktionieren im FF aber auch nicht - und im IE bleibt das Feld auf seinem Platz kleben wenn ich mit visibility arbeite - mit display rückt dagegen das zweite Feld auf den Platz des ersten - was mir besser gefallen würde.
Wie kann ich ein Element so verstecken/anzeigen, dass es im FF und IE gleich funktionert?
Danke,
Boby
|
 |
stefan Wohnort: Münster

|
Problem bei ANYPAGE
Geschrieben: 27.11.2006 14:43
Allerdings habe ich dann ein Problem mit meiner Lösung - denn ich brauche das "onload" um bestimmte Elemente zu verstecken.
versteh ich nicht ganz wieso unbedingt ein onload du kannst doch wie Sebastian schrieb JS in den body packen? wo ist das problem? ich verstehe nicht das problem dabei oder das was du erreichen willst.
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Problem bei ANYPAGE
Geschrieben: 26.11.2006 22:50
Allerdings habe ich dann ein Problem mit meiner Lösung - denn ich brauche das "onload" um bestimmte Elemente zu verstecken. Das onload gehört aber in den BODY der Seite - den ich aber nicht verändern kann, da der BODY-Tag ja nicht von mir kommt...
"onload" darf aber nur in BODY und FRAMESET verwendet werden - also muss ich offenbar eine andere Lösung für einen "autoexec"-Code in OPN finden.
Hallo Boby,
du kannst die Elemente per CSS (style='display:none;')verstecken. Und beim OnClick bzw. OnChange in einem INPUT-Element kannst du die Style-Sheets per JavaScript ( document.getElementById('idname').style.visibility='visible'; ) ja wieder sichbar machen.
Das dürfte auch klappen. Ist nur ein Denkanstoß...
Beispiel:
<div id="versteckt" style="display:none;">Versteckt wird es beim Klick auf Radio sichtbar</div>
<input type="radio" name="radiobutton" value="radio1" onClick="JavaScript:document.getElementById('versteckt').style.visibility='visible';">
Du kannst ja auch gleich 2 JavaScript-Befehle unterbringen, dass das eine Feld sichtbar macht und das andere wieder versteckt.
Gruß
Sebastian
|
 |
Gast
Unregistrierter Benutzer
|
Problem bei ANYPAGE
Geschrieben: 26.11.2006 22:31
YUCK! Soviele Meldungen hat mir der W3C-Validation Service nicht beschert - und eine Professional-Version eines Validators besitze ich nicht.
Ich habe aber dank Deines Links noch einige Fehler gefunden...
Das mit den doppelten BODY's ist natürlich klar - ich habe bisher immer eine VOLLSTÄNDIGE Website aufgebaut (mit HEAD, HTML, BODY und allen Tags die sonst dazugehören). Dass das innerhalb von OPN nicht notwendig bzw. sinnvoll ist, ist natürlich bei nährerem überlegen klar - denn das kommt ja schon alles von Eurem Framework.
Allerdings habe ich dann ein Problem mit meiner Lösung - denn ich brauche das "onload" um bestimmte Elemente zu verstecken. Das onload gehört aber in den BODY der Seite - den ich aber nicht verändern kann, da der BODY-Tag ja nicht von mir kommt...
"onload" darf aber nur in BODY und FRAMESET verwendet werden - also muss ich offenbar eine andere Lösung für einen "autoexec"-Code in OPN finden.
Ciao,
Boby [addsig]
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Problem bei ANYPAGE
Geschrieben: 26.11.2006 22:17
Hallo,
wegen dem BODY: Ich hätte die Meldung auch so gedeutet, aber wenn ich mir den Quelltext von der Seite ansehe (hier die Plain Version: http://www.rc-boote.at/upload/boby/speedcalc2_multi.php)
finde ich nur ein BODY und ein /BODY.
Deshalb meine Ratlosigkeit...
Ciao,
Boby
Jetzt muss ich mich doch mal in die Diskussion einklingen.
In der von dir genannten Url ist das JavaScript ausserhalb von HEAD und BODY. JavaScript sollten innerhalb HEAD oder BODY sein. Im Bestenfall und sogar empfohlen im HEAD-Abschnitt.
Beispiel:
http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche
Zitat aus de.selfhtml.org:
...
Es ist unter JavaScript-Programmierern zur Gewohnheit geworden, einen solchen Bereich im Kopf der HTML-Datei, also zwischen <head> und </head> zu definieren.
...
In solchen Fällen ist es manchmal auch erforderlich, den Script-Bereich innerhalb des HTML-Dateikörpers, also innerhalb von <body>...</body>, zu notieren.
...
Bitte den JavaScript-Abschnitt vor dem Endabschnitt von HEAD einfügen. Dann dürfte der Validator auch nicht großartig meckern.
Dann klappt's auch mit dem Nachbarn.
Gruß
Sebastian
|
 |