Mit Javascript div-boxen ein und ausblenden
Lukas
- javascript
0 Siechfred0 flashnfantasy0 Lukas
Hallo leute,
ich hab folgendes problem:
ich habe unterschiedliche texte die durcheinander gewürfelt sind.
jeden textabschnitt habe ich mit einem DIV umrahmt. die textabschnitte die zusammen gehören haben die gleiche ID im DIV.
ich möchte nun mit javascript alle DIV boxen mit der gleich ID aus und einblenden.
so sieht mein quellcode aus:
<style>
#ms_1
{
display:none;
}
#ms_2
{
display:block;
}
</style>
<script type='text/javascript'>
function show(das){
document.getElementById(das).style.display='block';
}
function hide(das){
document.getElementById(das).style.display='none';
}
</script>
</head>
<body>
<a href="javascript:show('ms_1')"><b>1 open</b></a>
<a href="javascript:hide('ms_1')"><b>1 close</b></a>
<a href="javascript:show('ms_2')"><b>2 open</b></a>
<a href="javascript:hide('ms_2')"><b>2 close</b></a>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<div id="ms_2">test 2</div>
<div id="ms_1">test 1</div>
<br>
-------
Das problem ist nur das sich nicht alle DIV boxen mitd er selben ID öffnen sondern nur eine (immer die erste mit der ID)
ich kann aber leider ned alle texte zusammenfassen und dann in eien DIV box sperren.
was kann ich tun
Lukas
Hell-O!
Das problem ist nur das sich nicht alle DIV boxen mitd er selben ID öffnen sondern nur eine (immer die erste mit der ID)
Eine ID muss dokumentweit eindeutig sein. Unter dieser Maßgabe liefert getElementById keine Kollektion von HTML-Elementobjekten, sondern nur ein einziges, nämlich das erste.
was kann ich tun
Hole dir alle Container mit getElementsByTagName('div') und gehe diese durch. Dabei blende die ein und aus, die deinen Vorgaben entsprechen, z.B. indem du die IDs auf Gemeinsamkeiten prüfst. Zuvor überlege dir aber, ob es denn DIVs sein müssen, oder ob nicht ein anderes HTML-Element besser geeignet ist.
Siechfred
Ähnliche Probleme löse ich mit RegExp...
Hier so grob die Idee:
var re=/ms_1_(\d*)/gi;
var alp = document.getElementsByTagName("div");
for (var i=0; i < alp.length; i++)
{
var nid = alp[i].id;
re.lastIndex=0;
var gto = re.exec(nid);
if (gto != null)
{
alp[i].style.display = ....
...
}
}
Ähnliche Probleme löse ich mit RegExp...
Hier so grob die Idee:
var re=/ms_1_(\d*)/gi;
var alp = document.getElementsByTagName("div");
for (var i=0; i < alp.length; i++)
{
var nid = alp[i].id;re.lastIndex=0;
var gto = re.exec(nid);
if (gto != null)
{
alp[i].style.display = ....
...
}
}
hab ich schon erwähnt das ich so gut wie überhaupt keine ahnung von javascript habe ;D
aber danke euch beiden für die hilfe. werds mal versuchen umzusetzen
wenn ich ned klar komme meld ich mich nochmal