mit getElementbyXXX css ändern
birgit
- javascript
hallo,
wie kann ich in einem html dokument MEHRERE elemente über getElementbyXXX ansprechen?
mein problem ist, dass ich auf einer seite einen layer einblende und dann die darunterliegenden klappboxen solange ausbelden muss, da die nicht vom layer überdeckt werden..
also im moment schauts so aus:
head:
<script type="text/javascript">
<!--
function setclass (id, klasse) {
document.getElementById(id).className=klasse;
}
//-->
</script>
<style type="text/css">
.formhidden{visibility:hidden;}
.formshow{visibility:visible;}
</style>
body:
<a href="javascript:setclass('klappbox01','formhidden');">ausblenden</a>
<a href="javascript:setclass('klappbox01','formshow');">einblenden</a>
tut zwar, spricht aber eben nur eine klappbox an..
über getElementsByTagName kann ich auch nur auf ein element zugreifen, weil ich ja in der [] angeben muss welches, oder? und getElementsByName fällt raus, da ich für die klappboxen unterschiedliche namen verwenden muss.
danke, birgit
Hi,
über getElementsByTagName kann ich auch nur auf ein element zugreifen, weil ich ja in der [] angeben muss welches, oder? und getElementsByName fällt raus, da ich für die klappboxen unterschiedliche namen verwenden muss.
und was spricht dagegen, weitere Elemente über getElementById() anzusprechen?
Also:
function setclass (klasse) {
document.getElementById(id1).className=klasse;
document.getElementById(id2).className=klasse;
...
}
MfG Hopsel
hallo zusammen,
@joachim:
Warum blendest Du nicht die Form aus?
den ganzen form tag will ich nicht ausblenden, weil sonst auch die texte fehlen, die da so dazwischen stehen und das wird mir dann zu unruhig (der layer deckt nicht die komplette seite ab)
Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...
das hab ich nicht so ganz verstanden meinst du damit das gleiche wie hopsel (s.u.)?
@hopsel
und was spricht dagegen, weitere Elemente über getElementById() anzusprechen?
Also:
function setclass (klasse) {
document.getElementById(id1).className=klasse;
document.getElementById(id2).className=klasse;
...
}
>
könnte ich theoretisch schon machen, die klappboxen werden aber wenn's dann mal funktioniert über cms generiert und ich hab jetzt noch keinen überblick wieviele das dann mal sein können..
gibt's keine möglichkeit einfach alle die da sind anzusprechen?
danke, birgit
hi,
könnte ich theoretisch schon machen, die klappboxen werden aber wenn's dann mal funktioniert über cms generiert und ich hab jetzt noch keinen überblick wieviele das dann mal sein können..
gibt's keine möglichkeit einfach alle die da sind anzusprechen?
du könntest das ganze viel einfacher angehen, in dem du hauptsächlich CSS die arbeit machen lässt:
form.versteckKlasse select { visibility:hidden; }
dieser selektor trifft auf alle selects zu, die in einem formular mit der klasse "versteckKlasse" liegen.
also bräuchtest du nur noch per javascript dem formular diese klasse zuweisen, um alle selectfelder darin auszublenden.
klasse wieder wegnehmen - selects wieder sichtbar.
gruß,
wahsaga
@ wahsaga
ahhhh! so einfach :-)
danke, danke. funktioniert bestens!
@joachim
hab's jetzt einigermassen verstanden, aber offensichtlich habe ich das ganze eh von der falschen seite angepackt. mit der lösung von wahsaga ist's super einfach..
trotzdem vielen dank!
grüsse, birgit
Hi,
Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...
Du gibst jedem zu versteckenden Element eine unique ID. Du erstellst ein Array, dass diese als Strings enthaelt:
var my_inputs = new Array("ID_1", "ID_2", ...);
Dann laesst Du zum Verstecken/Zeigen eine Schleife laufen:
function dpl(stat) {
// hier das Array
var my_inputs = new Array("ID_1", "ID_2", "ID_3");
// hier die Schleife
for (i = 0; i < my_inputs.length; i++) {
document.getElementById(my_inputs[i]).style.display = stat? "inline" : "none";
}
}
so rufst Du zum verstecken: dpl(0);
so zum Zeigen: dpl(1);
Mehr Infos zu den verwendeten Elementen findest Du hier in der Doku.
das hab ich nicht so ganz verstanden meinst du damit das gleiche wie hopsel (s.u.)?
vermutlich ;-)
Gruesse, Joachim
Hi,
wie kann ich in einem html dokument MEHRERE elemente über getElementbyXXX ansprechen?
Warum blendest Du nicht die Form aus?
Ansonsten sammle alle Element-ID's in einem Array und lasse eine Schleife drueber laufen...
Gruesse, Joachim