Autor Zpráva
vojtan
Profil
Mám skript na záložky, ale nefunguje mi v IE 7 a 8, v ostatních prohlížečích jako IE 9, Chrom, Firefox funguje bez problému, někde jsem četl, že chyba by mohl být v getElemetsByClassName a getElementsById, ale já vůbec netuším, jak to přepsat, aby mi to fungovalo. Poradí někdo?

function hasClassName(element,className) {
    return element.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"));
}


function zalozky(hodnota){
  var celkemZalozek = document.getElementsByClassName("detailZalozka").length;

  for (i = 0; i < celkemZalozek; i++) {
    document.getElementsByClassName("detailZalozka")[i].className = "detailZalozka";
    document.getElementsByClassName("detailObsahZalozky")[i].style.display = "none";
  }
  
  document.getElementById("zalozka_" + hodnota).className = "detailZalozka detailZalozkaAkt";
  document.getElementById("obsah_" + hodnota).style.display = "block";
  
  if (hodnota == "alternativni") {
    zmenaVyskyZbozi(4, 'altNazev', 'altTelo');
    zmenaVyskyElementu(4, 'vyrobkyStejneVelikeFoto2', 'imgStejneVelike2');
  }
}
pcmanik
Profil
vojtan:
Bude to tym, ze funkcia getElementsByClassName() V IE strarsich ako 9 proste neexistuje.
Chamurappi
Profil
Reaguji na vojtana:
Není jednodušší změnit všechno to, co změnit chceš, změnou jedné jediné třídy na společném rodiči? Měnit víc tříd na více elementech je málokdy potřeba.
vojtan
Profil
Když já tomu vůbec nerozumím, potřebuji jen poradit nějaké řešení jak kód přepsat, aby mi to fungovalo i ve straších verzích.
vojtan
Profil
Ještě jsem zkusil změnit kód:

function zalozky(hodnota){
  var celkemZalozek = document.getElementsByTagName("detailZalozka").length;

  for (i = 0; i < celkemZalozek; i++) {
    document.getElementsByTagName("detailZalozka")[i].setAttribute("class", "detailZalozka");
    document.getElementsByTagName("detailObsahZalozky")[i].style.display = "none";
  }
  
  document.getElementById("zalozka_" + hodnota).setAttribute("class", "detailZalozka detailZalozkaAkt");
  document.getElementById("obsah_" + hodnota).style.display = "block";
  
}


Přidal jsem ke každému prvky name, které má stejnou hodnotu jako class, ale teď se mi jednotlivé záložky nepřepínají, ale když na jednu kliknu, tak se obsah zobrazí pod tou původní. Už fakt nevím, jak to ještě upravit :(

Tady ještě kód html:
  echo "<div class=\"detailZalozka";
    if ($zalozky==0):
      $name_zalozka = " detailZalozkaAkt";
      echo " detailZalozkaAkt";
      $akt_zalozka="dotaz";
    endif;
  echo "\" name=\"detailZalozka".$name_zalozka."\" id=\"zalozka_dotaz\" onclick=\"zalozky('dotaz');\">Dotaz na zboží</div>\n";
  echo "</div>";

  if ($zaznam ["popis"]!=""):
    echo "<div name=\"detailObsahZalozky\" class=\"detailObsahZalozky";
      if ($akt_zalozka=="popis") echo ""; else echo " skryte";
    echo "\" id=\"obsah_popis\"><p>";
	echo $zaznam ["popis"];
                 echo "</p></div>\n";
  endif;

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0