Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] warstwy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Ace
witam, natknolem sie na problem zwiazany z warstwami i JS. Mianowicie,
  1. <div id="lay[0]" style="display: none; ">
  2. jakis text 1
  3. </div>
  4. <div id="lay[1]" style="display: none; ">
  5. jakis text 2
  6. </div>
  7. <div id="lay[2]" style="display: none; ">
  8. jakis text 3
  9. </div>
  10. <div id="lay[3]" style="display: none; ">
  11. jakis text 4
  12. </div>

na stronie mam taki kod...
mam 4 linki odwolujace sie do kazdego z tych elementow, tzn...
  1. <a href="#" onClick="pokaz(0); return false;">
  2. <a href="#" onClick="pokaz(1); return false;">
  3. <a href="#" onClick="pokaz(2); return false;">
  4. <a href="#" onClick="pokaz(3); return false;">


i funkcja pokaz()
Kod
function pokaz( co )
{
    el = document.getElementById( "lay[" + co + "]" );
    if (el.style.display == "block")
    {
  hideAll();
  el.style.display = "none";
    }
    else
    {
  el.style.display = "block";
    }
}


i wszystko jest ladnie, warstwy sie pokazuja, ale chce osiagnac taki efekt, ze klikajac na link, uaktywnia sie div o podanym id, a reszta sie chowa... probowalem uzyc funkcji


Kod
function hideAll()
{
    for( i=0; i<1000; i++ )
    {
  tmp = document.getElementById( "lay[" + i + "]" );
  tmp.style.display = "none";
    }
}


lub probowalem tez
Kod
function hideAll()
{
    while ( tmp = document.getElementById( lay ) )
    {
  tmp.style.display = "none";
    }
}


i glownie to chodzi mi o to, zeby jakis text dynamicznie sie zmienial, i wykombinowalem do tego warstwy. Js ucze sie od kilku dni, wiec prosze nie bijcie ;]
Ślepiec
nie wiem czy jestem staroświecki ale ja wolę używać :
  1. document.getElementById(nazwa).style.visibility = 'visible' // jako pokaż...i ....
  2. document.getElementById(nazwa).style.visibility = 'hidden' // jako ukryj


po drugie :
po co return false - nie sądze że oto chodzi, ale nigdzie nie widzałem tej frazy w takim miejscu.

przejdzmy do sprawy głównej :
aby ukryć wszystkie użyj funkcji :
Kod
function wszystko() {
var max = 'liczba obiektów' /* myślę że używasz php czy czegoś takiego
więc w wal :
var max = <?php echo $max; ?>
*/

  for( i = 0; i < max; i++) {
   document.getElementById('nazwa'+i).style.visibility = 'hidden';
  }
};


dopiero po tym wklep funkcję odnośnie pokazywania jednego div'a, lub połącz je, np tak:
Kod
function pokaz(id) {
var max = <?php echo $max; ?>;
for( i = 0; i < max; i++) {
  if ( i != id ) {
     document.getElementById('nazwa'+i).style.visibility = 'hidden';
  }
  else {
    document.getElementById('nazwa'+i).style.visibility = 'visible';
  }
}
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.