DOM einem Anfänger erklären
Nicola
- javascript
0 Bio0 Nicola0 Sven Rautenberg0 Bio0 McNavc
0 Sven Rautenberg0 Carsten0 Thomas Meinike
Entschuldigung für die späte Störung :),
aber ich komm nicht ganz klar mit dem DOM (trotz der sonst umfassenden Hilfe von Selfhtml)
Bei folgendem Sourcecode:
<body>
<table border="0" cellspacing="0" cellpadding="0" id="formtab">
<tr>
<td colspan="2" width="600" height="40"><a href="#" onFocus="if(this.blur)this.blur()" onmouseover="MM_showHideLayers('div_unternehmen','','hide','div_leistungen','','hide','div_werbung','','hide','div_seminare','','hide');return false;"><img src="../images/pi.gif" width="600" height="40" border="0" alt=""></a></td>
</tr>
<tr id="formtr">
<td width="150" height="400"><img src="../images/pi.gif" width="150" height="400" border="0" alt=""></td>
<td width="450" id="formtd">
<form method="post" action="seminare_formmail.php" name="buchungsformular">
<input type="hidden" name="redirect" value="seminare_dank.htm">
<div align="center"><select name="seminar" size="1">
<option>2001-11-12 Telefontraining 1</option>
<option>2001-11-17 Mindmapping am PC</option>
<option>2001-11-26 Ganzheitliches Sprechen</option>
<option>2001-12-03 Geldforum für jedermann</option>
<option>2002-01-14 Verkaufstraining</option>
<option>2002-01-21 SAM - Service Basic</option>
<option>2002-01-26 Marketing, wozu ...?</option>
<option>2002-02-04 Gedächtnistraining</option>
<option>2002-02-16 Geldforum für jedermann</option>
<option>2002-02-23 Special: Bodybalance</option>
<option>2002-03-04 Verkauf und Beratung</option>
<option>2002-03-10 Special: Power Day</option>
<option>2002-03-11 Promotion</option>
<option>2002-03-18 Ganzheitliches Sprechen</option>
<option>2002-04-08 SAM - Rhetorik Basic</option>
<option>2002-04-13 Die neue Rechtschreibung</option>
<option>2002-04-20 Geldforum für jedermann</option>
<option>2002-04-27 Business Feng Shui</option>
<option>2002-06-10 Verkauf von Zusatzprodukten</option>
<option>2002-06-24 Telefontraining 2</option>
</select></div><br>
<input type="reset" value="Eingabe zurücksetzen">
<input type="submit" value="Buchung abschicken">
</form>
hätte ich in einer Funktion so auf die Formularauswahl zugegriffen:
document.buchungsformular.seminar.option[1].selected
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
mit der bitte um Hilfe...
danke, N
Sup!
document.buchungsformular.seminar.option[1].selected
Tja, wenn das "true" ist, dann solltest Du wissen, ob die erste Option gewählt ist. Funktioniert das nicht, oder wolltest Du das gar nicht?
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
Daran liegt's IMHO nicht. Der logische Zugriff auf Formulare ist IMHO nicht abhängig vom darum gebastelten Rest-Markup.
Gruesse,
Bio
Sup!
document.buchungsformular.seminar.option[1].selected
um ehrlich zu sein hab ich ja was unterschlagen; das ist ein Teil einer Anweisung, die sagt, er (the browser) soll's auf true setzen, was er aber nicht macht; hier der Ausschnitt:
opener.document.buchungsformular.seminar.option[1].selected = true;
das opener gehört dazu, funktioniert sonst; nur bei dieser zuweisung nicht (verflixt)
Tja, wenn das "true" ist, dann solltest Du wissen, ob die erste Option gewählt ist. Funktioniert das nicht, oder wolltest Du das gar nicht?
es ist die zweite, Zählung beginnt bei 0 (kleine Bemerkung)
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
Daran liegt's IMHO nicht. Der logische Zugriff auf Formulare ist IMHO nicht abhängig vom darum gebastelten Rest-Markup.
Was heißt IMHO? kenn mich mit internetdialekt nicht (mehr) so aus
und bist Du Dir mit dem Zugriff sicher. Beim IE6 (der ja der strikteste bisher ist, oder) kommt eine Fehlermeldung, das er das Objekt nicht findet und er führt die Funktion nicht weiter aus...
hat aber nichts mit opener zu tun (glaub ich zu 99%)
gruß, N
Sup!
document.buchungsformular.seminar.option[1].selected
um ehrlich zu sein hab ich ja was unterschlagen; das ist ein Teil einer Anweisung, die sagt, er (the browser) soll's auf true setzen, was er aber nicht macht; hier der Ausschnitt:
opener.document.buchungsformular.seminar.option[1].selected = true;
Du mußt den selectedIndex setzen. Alles weitere steht in meiner Antwort </?m=11525&t=2027>.
- Sven Rautenberg
Sup!
es ist die zweite, Zählung beginnt bei 0 (kleine Bemerkung)
Tja, wir 31337-people sagen eben auch "die nullte", also ist es doch die erste ;-)
Gruesse,
Bio
Morjen Bio !
Tja, wir 31337-people sagen eben auch "die nullte", also ist es doch die erste ;-)
Drum können wir Programmierer auch nicht bis 3 zählen:
0,1,2, ... äh
Und mehr als 3 Zustände braucht man ja nicht:
ja, nein, bin mir nicht sicher
;-)
MfG McNavc
Hallo,
Und mehr als 3 Zustände braucht man ja nicht:
ja, nein, bin mir nicht sicher
Beim Atari ST gab es eine OS-Funktion, um zu überprüfen, ob die Diskette gewechselt wurde, welche diese drei Zustände als Antwort liefern sollte. Rate mal, welcher Zustand immer geliefert wurde;-)
Grüße
Klaus
Entschuldigung für die späte Störung :),
Spät ist relativ, denn das Internet schläft nie.... (so, und für den Rest der Antwort schalte ich den Wortschwülster mal lieber wieder aus... ;) ).
aber ich komm nicht ganz klar mit dem DOM (trotz der sonst umfassenden Hilfe von Selfhtml)
Bei folgendem Sourcecode:
Der Source enthält Macromedie-Müll. Mach den lieber mal weg, is wirklich besser so... Naja, aber für das Problem nicht entscheidend.
hätte ich in einer Funktion so auf die Formularauswahl zugegriffen:
document.buchungsformular.seminar.option[1].selected
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
Fast richtige Feststellung, falsche Schlußfolgerung!
Wie du in </selfhtml/javascript/objekte/forms.htm>, </selfhtml/javascript/objekte/elements.htm> und vor allem </selfhtml/javascript/objekte/options.htm> siehst du, daß du zwar im Prinzip nicht falsch liegst, aber im Detail dann doch.
Mit document.buchungsformular greifst du auf das Formular zu (alle Informationen des ersten Links). Mit document.buchungsformular.seminar greifst du auf die Select-Liste zu (alle Informationen des zweiten Links). Und das Select-Feld enthält viele Elemente als Array, die man auswählen kann, und die ihrerseits alle Informationen des dritten Links enthalten.
Mit document.buchungsformular.seminar.option[1].selected erhälst du true oder false, je nachdem, ob die zweite Option deiner Liste gewählt wurde oder nicht.
Vermutlich willst du aber wissen, welches der vielen Listenelemente selektiert wurde. Dazu fragst du document.buchungsformular.seminar.selectedIndex ab und erhälst die Zahl des selektierten Elements. Das Ergebnis kannst du als Index für deinen Zugriff auf das Element benutzen. Mit document.buchungsformular.seminar.option[document.buchungsformular.seminar.selectedIndex].value erhälst du beispielsweise den Value-Wert des ausgewählten Elements (da du keinen Value angegeben hast, ist der Wert identisch mit dem Elementtext).
- Sven Rautenberg
danke für solch eine ausführliche Antwort!
Die Leute nehmen sich heutzutage ja kaum noch Zeit für Ihre technikleidenden Mitmenschen (Wortschwülste gehören einfach dazu!)
aber wie ich Bio schon geantwortet hab, ist das eigentlich eine zuweisung namens
opener.document.buchungsformular.seminar.option[1].selected = true;
die im IE6 ganz und gar nicht funktioniert; Deine Links hab ich noch nicht nachgelesen und ich hoffe Du hast mich nicht eh schon mit der Nase auf die Lösung des Problems gestoßen, das wäre mir äußerst peinlich
danke und gruß, N
Hallo Nicola!
aber wie ich Bio schon geantwortet hab, ist das eigentlich eine zuweisung namens
opener.document.buchungsformular.seminar.option[1].selected = true;
das geht mit:
document.buchungsformular.seminar.selectedIndex=1;
und sollte laut MSDN auch im IE gehen.
Gruss,
Carsten
Hallo Nicola!
aber wie ich Bio schon geantwortet hab, ist das eigentlich eine zuweisung namens
opener.document.buchungsformular.seminar.option[1].selected = true;
das geht mit:
document.buchungsformular.seminar.selectedIndex=1;
und sollte laut MSDN auch im IE gehen.
Gruss,
Carsten
Hallo!
ich war schon knapp dran zu jubeln aber, es funktioniert erst wieder nicht (in meinem IE5.5, darum möchte ich nochmals auf das Objekt opener zu sprechen kommen. Das funktioniert ja nur wenn ich ein Fenster mit window.open() aufgemacht habe, oder...?
gruß, N
Hallo Nicola!
document.buchungsformular.seminar.option[1].selected
Den Index des ausgewählten Elements bekommst du mit:
document.buchungsformular.seminar.selectedIndex
(also z.b. 3 für 2001-12-03 Geldforum für jedermann)
und dessen Wert (falls du der Übersicht halber einen benutzen möchtes) mit:
document.buchungsformular.seminar[document.buchungsformular.seminar.selectedIndex].value
Ein Beispiel dafür findest du in der Selfhtml-Quickbar:
http://selfhtml.teamone.de/navigation/quickbar/index.htm
bzw. der spannende Teil daraus im Quelltext:
view-source:http://selfhtml.teamone.de/navigation/quickbar/liste.htm
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
ne, damit hat das nix zu tun.
Gruss,
Carsten
Hallo Nicola,
document.buchungsformular.seminar.option[1].selected
das funktioniert aber nicht, weil das Formular in einer Tabelle drin steht...
Nein, das funktioniert deshalb nicht, weil es nicht option sondern options[indexwert_ab_0] lauten muss, also:
document.buchungsformular.seminar.options[1].selected=true;
MfG, Thomas