cain99
Goto Top

Ändern eines CSS Attributes für mehrere Elemente

Hallo,

am besten fang ich gleich mal an zu erklären worum es geht.
Ich habe eine Website mit vollständig geladenen und formatierten Daten welche ich teilweise durch display: none; ausblenden lassen
Es gibt dann pro Datensatz eine Überschrift womit ich den darunterliegenden Datensatz einblenden lassen kann.
Es gehören also jeweils 2 Teile zu einem Datensatz.

Nun soll aber beim Klick auf einen 2. Button alle versteckten Elemente angezeigt werden und beim 3. Button nur alle Elemente die ein bestimmtes Kriterium erfüllen.

Die ausgeblendeten Abschnitte haben alle eine feste eindeutige ID, die class ist ebenfalls festgelegt der Name kann jedoch beliebig sein.

Mit diesem Code lasse ich die betreffenden stellen ein und ausblenden.

function div_show_hide(id) {
/* alert(document.getElementById(id).style.display == "block") */

if (document.getElementById(id).style.display == "block")
{
document.getElementById(id).style.display = "none";
}
else
{
document.getElementById(id).style.display = "block";
}
}

Content-ID: 159294

Url: https://administrator.de/forum/aendern-eines-css-attributes-fuer-mehrere-elemente-159294.html

Ausgedruckt am: 23.12.2024 um 23:12 Uhr

nxclass
nxclass 24.01.2011 um 11:51:38 Uhr
Goto Top
Was ist jetzt genau dein Problem ?

ggf. fehlt Dir nur eine Funktion welche durch ein Array von IDs laufen kann:
var aDaten = new Array();
for (var sId in aDaten) {
    /* ... */
}
cain99
cain99 24.01.2011 um 12:07:07 Uhr
Goto Top
Mein Problem ist das ich nicht weiß wie ich alle Elemente ansprechen kann da sie alle unterschiedliche id's haben jedoch mit allen das gleiche passieren soll.

getelementbyID,Name und tagname fällt aus da ja alle nur ein Element ansprechen

Möchte quasi das alle tbody von style:none auf style:block gesetzt werden.
nxclass
nxclass 24.01.2011 um 20:13:17 Uhr
Goto Top
ich spare mir mal den Kommentar über Glaskugeln und Wahrsagerei - aber woran kann man die entsprechenden Elemente erkennen im HTML Code ?

alle tbody von style:none
alle tbody von ... style:block
... sind das alle ?
var aNodesTbody = document.getElementByTagName('tbody');  
var aNodes = new Array();
for (var iI=0; iI<aNodesTbody.length; iI++) {
  if (aNodesTbody[iI].attributes.style.display == 'none') {  
    aNodes.push( aNodesTbody[iI] );
  }
}
... jetzt sollten die gesuchten Elemente in aNodes stehen.

EDIT:
- ggf. ist es einfacher ein zusätzliches class Attribut einzufügen für die entsprechenden Elemente - und dann danach zu suchen.
- ebenfalls sollte die Suche gleich bei document.onload = ... geschehen