span und div

  • Themenstarter Themenstarter x12x13
  • Beginndatum Beginndatum
X

x12x13

habe mir nen script von myangeldust.com geklaut

PHP:
<script language="JavaScript" type="text/javascript">
function swap_content(id)
{
if (document.all.item('toggle_' + id).style.display == 'none')
{
    document.all.item('toggle_' + id).style.display = 'block';
    document.all.item('toggleimg_' + id).src = 'gfx/plus.gif';
}
else
{
    document.all.item('toggle_' + id).style.display = 'none';
    document.all.item('toggleimg_' + id).src = 'gfx/minus.gif';
}
}
</script>

PHP:
<a href='#' onclick="swap_content('imp_pos'); return false;">
<img src='gfx/minus.gif' id='toggleimg_YCmohkZe' border='0'><br>
</a>

PHP:
<div align="center">
<span id='toggle_imp_pos' style='display:none'>
content 1
</span>
</div>

PHP:
<div align="center">
<span id='toggle_imp_pos' style='display:none'>
content 2
</span>
</div>


habe jetzt das problem, wenn ich auf den link klicke, das nur ein layer sichtbar wird. und im ie wird unten angezeigt, das ein fehler auftrat (logisch). wie also öffne ich beide layer gleichzeitig ? hab absolut no ahnung von javascript ! :(

i hope you'll help ! :)
 
Hoi,

zwei Anmerkungen zu deinem Script:

1)
Das document.all-Objekt gehört nur zum Objektmodell des Internet Explorers, keines anderen Browsers.
(abgesehen von Opera, wenn als IE ausgegeben)

Legst du also Wert auf cross-browser-Kompatibilität, solltest du einen anderen Weg wählen, unten erwähnter sollte ein Ansatz dazu sein. :)

2)
Ein id-Attribut sollte nur einem Element pro HTML-Dokument zugeordnet werden, nicht doppelt.

Am besten du ordnest jeder zu ändernden Struktur eine eigene ID zu und greifst über die Methode getElementById() des document-Objektes auf das Element zu.
Einfach eine einzelne Anweisungen für jede ID und du kannst beliebig viele dieser Abschnitte per JSS ändern.

Oder aber, dann aber nur falls du keine weiteren <span>-Tags im Dokument verwendest, dann kannst du auch über die Methode getElementsByTagName() dir ein Array mit Referenzen aller span-Elemente zurückgeben lassen und auch so die ganzen Strukturen ändern. :)

hth,
Geist
 
Danke dir Geist !

Könntest du mir eventuel genauer erklären wie ich das am obigen Beispiel ändern muss ? bin absolut überfordert damit, geb ich ja zu. :(
 
Hallo,

ich habs jetzt deins mal so geändert:

PHP:
<script language="JavaScript" type="text/javascript">

function swap_content(id)
{
 if (document.getElementById('toggle_' + id).style.display == 'none')
    {
     document.getElementById('toggle_' + id).style.display = 'block';
     document.getElementById('toggle_' + id +'_2').style.display = 'block';
     document.getElementById('toggleimg_' + id).src = 'minus.gif';
    }
else
    {
     document.getElementById('toggle_' + id).style.display = 'none';
     document.getElementById('toggle_' + id +'_2').style.display = 'none';
     document.getElementById('toggleimg_' + id).src = 'plus.gif';
    }
}
</script>
und so
PHP:
<div align="center">
<span id='toggle_imp_pos_2' style='display:none'>
      content 2
</span>
</div>

schau dir bitte mal das File im Anhnag an und sag mir ob du dir das so vorgestellt hast...

ciao
 

Anhänge

THX @ ALL !!!

danke crono, das script im anhang hat bestens so funktioniert wie ich es haben wollte, und auch ein dickes danke an geist ! ihr habt mir sehr geholfen. :) hui
 
Original geschrieben von crono
Nein, GetElementById() gehört zur DOM 1.0 Spezifikation und wird von allen aktuellen Browsern unterstützt...

ciao

oh mann ich bin schon längst überholt:-)
ich dachte immer dass im moment nur der ie dom wirklich dingslt:-)

nur ne frage, ist selfhtml in sache js aktuell? das wollte ich in kürze eben mal lesen, aber ich will nicht, dass ich dann immer noch so hintendrein bin^^
 

Neue Beiträge

Zurück