Autor Zpráva
H13
Profil
Ahoj, potřeboval bych poradit se skriptem JS, mám následující skript:


<html>
<head>
<script language="Javascript" type="text/javascript" >
var show=0;
function showIt()
{
if (show==0)
{
showSpan="<span style=\"position:absolute;background-color:#ffffff; border: 1px solid \#cccccc\">Nejaky Text<br />Dalsi Text<br />A Dalsi Text</span>";
show=1;
}
else
{
showSpan="";
show=0;
}
document.getElementById('s').innerHTML=showSpan;
}
</script>
</head>
<body>
<a href="javascript:showIt();">Show it</a><br />
<span id="s"></span>
<p>Text, ktery bude prekryty</p>
</body>
</html>


Co ten skript dělá: Kliknutím na odkaz "Show it" se provede JS - JS vygeneruje "span" s třemi řádky, který překryje text vygenerovaný pomocí html (span je position:absolute). Druhé kliknutí na odkaz "Show it" přiřadí proměnné showSpan="", to znamená, že vygenerovaný "span" s třemi řádky zmizí. Mozilla i Internet provede vše v pořádku, problém je ovšem u Opery 9.00, u které vygenerovaný "span" nezmizí. Zmizí pouze tehdy, pokud není span position:absolute - jenže v tomto případě se text vygenerovaný pomocí html posune dolů a já potřebuji aby zůstal na svém místě a byl překryt...

Potřeboval bych vědět, jestli se taková metoda vytvoření bloku používá, jestli ne, potom mě zajímá, jestli neexistuje jiná metoda, která pomocí JS vygeneruje nějaký html blok, který překryje obsah stránky (něco jako na seznamu v mailu vytvořené okno s adresami, které překryje obsah a poté se klikem na křížek zavře)
peta
Profil *
H13
Je treba vedet, ze Opera je z hlediska JS smejd odflaknutej.
Cili ted se musis rozhodnout, jestli se na Operu vykasles nebo budes hledat vselijaka slozita reseni, jak to osidit?
Navrhoval bych neco tohoto stylu, kyz rikas, ze kdyz to neni position, je to dobre:

var x = document.getElementById('s');
x.innerHTML=showSpan;

var x = document.getElementById('s');
x.style.position = "static";
x.innerHTML="";
x.style.position = "absolute";

(cili ve static to vymazat a zmenit na absolute)

Samozrejme, toto reseni bude asi dost podivne, takze jeste jinak:
var x = document.getElementById('s');
x.style.dislay="inline";
x.innerHTML=showSpan;

x.style.dislay="none";
x.style.position = "static";
x.innerHTML="";
x.style.position = "absolute";

A protoze toto v podstate snad ani static nemusi mit, tak bych zkusil
span#s.aaa {display:none;}
span#s.bbb {display:block;}

var x = document.getElementById('s');
x.className="aaa";

x.className="bbb";
A tim, ze je display:none, by nemel byt snad ani viditelny
h13
Profil *
no přidal jsem tedy pár řádků, v opeře to začalo funguvat, jenže v ie se trochu prodloužila odezva, tak nevím...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0