Autor Zpráva
Onecar
Profil
Zdravím,

zas a opět zápasím s tím zlem JavaScriptem :-( a nevím si vůbec rady.

Mám kód:

<script type="text/javascript">


function zobrazSkryj (idecko, pic) {

el = document.getElementById(idecko).style;
ico = document.getElementById(pic);

el.display = (el.display == "block") ? "none" : "block";
ico.src = (ico.src == "./vzhled/styl-solution/img/open.png") ? "./vzhled/styl-solution/img/shut.png" : "./vzhled/styl-solution/img/open.png";

}

</script>
</head>
<body>
<div id="full">

<div class="menu-right">

<div class="sekce sekce-top">Vítejte<img id="tab-welcome" src="./vzhled/styl-solution/img/open.png" width="16" height="16" class="tabber" onClick="zobrazSkryj('welcome','tab-welcome')" /></div><br />
<div id="welcome" style="">Ahoj.</div>


Pokud kliknu na onen obrázek, skryje se výplň divu, což je správně - ale nezmění se obrázek z open.png na shut.png. Absolutně to nechápu, zkopíroval jsem kód od Yuhůa a upravil, leč nejede to.

Nenašla by se prosím pěkně duše, která by kód upravila tak, aby se změnil i obrázek? Už si fakt nevím rady, proč to jednou jede (mizení textu) a podruhé ne (změna obrázku)...
Chamurappi
Profil
Reaguji na Onecar:
Ve vlastnosti src je absolutní adresa obrázku. I když tam nastavíš relativní. Nejjednodušší úprava bude, když i ten ico.src nastavíš podle hodnoty el.display.
Na tvém místě bych to řešil celé jinak, objektu style se vyhýbám.
Onecar
Profil
Nerozumím ti.

I když jsem nastavil absolutní adresy (tj. localhost/), nejede to :-(. To fakt nejde nějak jednoduše zprovoznit?
peta
Profil
Onecar
"Yuhův kód funguje, můj ne"
Postup je takovy, ze si vemes Juhuuv kod a krok po kroku dostazujes sve hodnoty a overujes funkcnost. V okamziku, kdy to presnate fungovat vis, kde mas chybu.

k Chamurappi
ti chtel jenom rici, ze tu cestu nemusis vsude zadavat.
var dir = "./vzhled/styl-solution/img/";
function ....
{
ico.src = (ico.src == dir+"open.png") ? dir+"shut.png" : dir+"open.png";
}
NEBO
function ....
{
var dir = "./vzhled/styl-solution/img/";
ico.src = (ico.src == dir+"open.png") ? dir+"shut.png" : dir+"open.png";
}

Ale, ze je podstatne, aby jsi tam ty obbrazky mel nahrane.
Zobrazi se ti:
<img src="./vzhled/styl-solution/img/open.png">
<img src="./vzhled/styl-solution/img/shut.png">
?
Pokud ano, tak obrazky i cestu mas spravnou.

A tak dale, krok za krokem nebo upravovat funkcni priklad postupne.
Onecar
Profil
Chlapi, díky moc za pomoc :-). Konečně je to funkční.

Chyba byla asi v té relativní adrese - jako kdybyste do prohlížeče napsali "./vzhled/..." :-). No, zkušenost se taky počítá. Tak zas někdy.
Chamurappi
Profil
Reaguji na petu:
Ne, to jsem tedy říct nechtěl, takovou blbost bych neradil.

img.src = "./test.jpg";
alert(img.src);
— tohle ti nikdy neukáže „./test.jpg“. Ať nastavíš do src cokoliv, vrátí se ti absolutní adresa.

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: