javascript
conni
- design/layout
Hallo zusammen,
ich habe für folgendes Problem leider noch keine Lösung gefunden (weder in selfhtml selbst, noch in den Forumsbeiträgen):
Über ein Formular mit Radiobuttons können verschiedene Dateien in einen iframe geladen werden, wo wiederum über inputfelder (Radio) je nach Auswahl verschiedene Dateien angezeigt werden. Die Formulare mit den Radiobuttons habe ich zur Strukturierung wie folgt in Tabellen gepackt:
<form name="formhgr">
<table>
<tr><td colspan="2">Wählen Sie</td></tr>
<tr id="row0">
<td><input name="hgr" value="ogr/b00.htm" type=radio id="00" onClick="change()"></td>
<td>B erste Wahl (00)</td>
</tr>
<tr id="row1">
<td><input name="hgr" value="ogr/b01.htm" type=radio id="01" onClick="change()"></td>
<td>B zweite Wahl (01)</td>
</tr>
</table>
</form>
<iframe src="" name="ogr" id="ogr" width="300" height="300"></iframe>
(Die Funktion "change()" bewirkt das Anzeigen der entsprechenden Datei im iframe "ogr" und Sammeln der ID's der Radiobuttons zur anschließenden Anzeige).
Ist es möglich, die Tabellenzellen (z.B. "B erste Wahl (00)") oder auch die ganze entsprechende Zeile bei Auswahl einzufärben oder sonstwie hervorzuheben?
Mit onfocus="this.style.backgroundColor='blue'" und entsprechendem "onblur" direkt in der Zelle mit dem Radiobutton angegeben, klappt es zwar, aber wenn eine weitere Auswahl im nächsten iframe getroffen wird, ist der Focus natürlich weg - und die farbliche Hervorhebung auch. Habe es mit einem Script versucht:
function faerbe(){
if(document.formhgr.hgr[0].checked == true){
document.getElementById("row0").style.backgroundColor="blue";
document.getElementById("row1").style.backgroundColor="gray";
}
else if(document.formhgr.hgr[1].checked == true){
document.getElementById("row0").style.backgroundColor="gray";
document.getElementById("row1").style.backgroundColor="blue";
}
}
Das Script klappt auch, aber ich müsste lauter solche Scripte schreiben, weil die Anzahl der möglichen Radiobuttons stark variiert (von 2 bis 20).
Kann man das nicht effektiver lösen?
Wenn mir da jemand weiterhelfen könnte, wär ich sehr froh.
Viele Grüße
Conni
Hi!
Möge dieser Artikel behilflich sein: http://aktuell.de.selfhtml.org/tippstricks/dhtml/fullrowselect/index.htm
Gruß Herbalizer
Hallo Herbalizer,
habe den Link schon ausprobiert und versucht das in mein Script einzuarbeiten, hat aber leider nicht geklappt, weil dabei unter anderem die ID's der Radiobuttons verwendet werden. Die brauche ich aber schon für die "Sammlung" der Nummern.
Danke trotzdem
Conni
hi,
habe den Link schon ausprobiert und versucht das in mein Script einzuarbeiten, hat aber leider nicht geklappt, weil dabei unter anderem die ID's der Radiobuttons verwendet werden.
wie meinen?
was spricht dagegen, eine ID mit javascript an zwei verschiedenen stellen anzusprechen? sind das etwas wegwerf-IDs, nur einmal nutzbar?
Die brauche ich aber schon für die "Sammlung" der Nummern.
btw: du solltest dir mal gedanken über den aufbau deiner IDs machen. tipp: eine gültige ID darf _nicht_ mit einer ziffer anfangen...
gruss,
wahsaga
Hallo wahsaga,
die ID's der Radiobuttons brauche ich als Ziffernfolge, d.h. dass aus den ausgewählten ID's der einzelnen ineinander verschachtelten iframes am Ende eine fortlaufende Nummer ausgeworfen wird. Das klappt auch, obwohl die ID's aus Ziffern bestehen (ich wusste nicht, dass sie das nicht sollten). Eine andere Möglichkeit der Ziffernübergabe als über die ID's habe ich nicht gesehen.
In der abschließenden Anzeige der Nummerierung (ausgewählte ID's der Radiobuttons in den iframes fortlaufend hintereinander) dürfen auf keinen Fall Zeichen außer Ziffern auftauchen. Außerdem sind die ID's bei mir nicht immer fortlaufend, d.h. nach 02 kann durchaus auch 53 kommen.
Tja, ... dann muss ich wohl die vielen Scripte für das Ein- und Ausschalten der Farbe schreiben, wo jeweils einzeln definiert ist, welche Farbe in welchem Fall gezeigt werden soll :(
Danke trotzdem für die Hinweise (und ich hoffe, ich habe mich nun verständlicher ausgedrückt)
Viele Grüße
Conni
hi,
die ID's der Radiobuttons brauche ich als Ziffernfolge, d.h. dass aus den ausgewählten ID's der einzelnen ineinander verschachtelten iframes am Ende eine fortlaufende Nummer ausgeworfen wird. Das klappt auch, obwohl die ID's aus Ziffern bestehen (ich wusste nicht, dass sie das nicht sollten). Eine andere Möglichkeit der Ziffernübergabe als über die ID's habe ich nicht gesehen.
"klappt zufällig im von mir verwendeten browser" und "ist richtig" sind und bleiben zwei verschiedene dinge.
In der abschließenden Anzeige der Nummerierung (ausgewählte ID's der Radiobuttons in den iframes fortlaufend hintereinander) dürfen auf keinen Fall Zeichen außer Ziffern auftauchen. Außerdem sind die ID's bei mir nicht immer fortlaufend, d.h. nach 02 kann durchaus auch 53 kommen.
wenn du nummern zu den radio buttons brauchst, dann gib ihnen doch IDs wie z.b. id="r15". das 'r' kannst du dann per javascript absplitten, und den string "15" in eine zahl umwandeln.
gruss,
wahsaga
Hallo,
habe mal versucht, die Radiobuttons umzubenennen in r00, r01 usw. Dann klappt aber gar nichts mehr. Ich finde auch nicht die Stelle im Script, an der ich aus "radio" "r" machen müsste.
Vielleicht kannst Du mir die im folgenden script markieren?
function rowclickedcheck(checkid, rowid)
{
window.setTimeout("colorizeRow('"+checkid+"','"+rowid+"')",300); //delay ist notwendig, weil der Eventhandler ausgelöst wird, bevor die Checkbox umgeschaltet wird...
return true;
}
function colorizeRow(idcheck, idrow)
{
document.getElementById(idrow).className = ((document.getElementById(idcheck).checked) ? "checked" : "unchecked");
}
function rowclickedradio(checkid, rowid,count)
{
window.setTimeout("colorizeRowRadio('"+checkid+"','"+rowid+"','" + count + "')",300); //delay ist notwendig, weil der Eventhandler ausgelöst wird, bevor die Checkbox umgeschaltet wird...
return true;
}
function colorizeRowRadio(idcheckcommon, idrowcommon, count)
{
for (i = 1; i <= count; i++)
{
idrow = "" + idrowcommon + i;;
idcheck = "" + idcheckcommon + i;
document.getElementById(idrow).className = ((document.getElementById(idcheck).checked) ? "checked" : "unchecked");
}
}
Zu dem "Absplitten des r" muss ich mich erst noch belesen. Habe nämlich nur oberflächliche Kenntnisse in Javascript.
Viele Grüße und Dank
Conni
Hallo,
habe mal versucht, die Radiobuttons umzubenennen in r1, r2 usw. Dann klappt aber gar nichts mehr. Ich finde auch nicht die Stelle im Script, an der ich aus "radio" "r" machen müsste.
Entschuldigung, ich war wohl etwas voreilig. Hab die Stelle gefunden, natürlich nicht im script, sondern im Aufruf der Funktion bei "oncklick=..."
Es funktioniert aber denn doch nicht, wenn die Nummerierung der ID's in r00, r01 usw. geändert ist.
Wo kann ich angeben, dass die Nummerierung zweistellig sein soll?
Zu dem "Absplitten des r" muss ich mich erst noch belesen. Habe nämlich nur oberflächliche Kenntnisse in Javascript.
Das muss ich natürlich noch immer
Viele Grüße und Dank
Conni
Gruß Conni