Autor Zpráva
arnir
Profil
mam tento kod:
<div id="da3a">
<a href="javascript:void(0);" onclick="clt(3);">
odkaz	
</a>
</div>
<div id="da3b" style="display:none;" onclick="clr(3);">
<span id="da3c">
<a href="http://url" id="l3" target="_blank">
<img src="klik.png" width="16" height="16" border="0" id="i3" />
</a>
</span>
</div>


a pro toto mam javascript kod:
function clt(o)
{
document.getElementByID('da'+o+'a').style.display='none';
document.getElementByID('da'+o+'b').style.display='';
document.getElementByID('da'+o+'c').style.paddingLeft=Math.ceil(630*Ma   th.random());
document.getElementByID('i'+o).style.marginTop=Math.ceil(16*Math.rando   m());
}

function clr(o)
{
document.getElementByID('da'+o+'b').style.display='';
document.getElementByID('da'+o+'a').style.display='none';
}


spravna funkcnost tohoto kodu by mela byt tato:
po kliknuti na "odkaz" odkaz zmizi a misto nej se nekde v divu obevi cervene kolecko (obrazek "klik")
pokud klikneme na cervene kolecko, odvede nas odkaz na pozadovanou url. pokud kdekoli vedle, cely proces se opakuje.
jde o jakousi kontrolu.

problem je vsak ihned "na zacatku" po odkliknuti se jednoduse nic nedeje.
diky za rady, vim je to slozity a hlavne dlouhy kod a nikomu se to asdi nebude chtit ani cist ale presto doufam ze to bude jinak :-)
peta
Profil
getElementByID('da'+o+'a')
clt(o)
onclick="clr(3)
id = 'da'+o+'a' = 'da3a'
ID je spravne, ale, co hlasi JS konzola?
Ve ff Nastroje - chybova konzola
getElementByID
takovou funkci neznam
jakpsatweb - javascript - priklady - zacatecnicke priklady

javascript:void(0);
to muzes zmenit na
#
Leo
Profil
"<a href="javascript:void(0);" onclick="clt(3);">"

to se opravdu dal cist nemusi, proc tak mate odkaz (znacku a), kdyz to odkaz neni... Leo
Railbot
Profil
...style.display=''"

A dál. Co by mělo dělat asi toto? Vlastnost display bez ničeho? Inline? Block? Nic?
arnir
Profil
delal jsem to podle jedne stranky kde to normalne funguj, i s tim odkazem...
konzole pise: Document.getElementById is not function
v cem je tedy chyba? ten odkaz se normalne pouziva i v tom originalu. a display bez niceho ma vicemene stejny ucinek jako block ale ani s block to nejde.
arnir
Profil
uz jsem na to asi prisel diky
Chamurappi
Profil
Reaguji na arnira:
v cem je tedy chyba?
Už jsi zjistil, že ve velikosti písmen. Na začátku jsi měl document.getElementByID, teď Document.getElementById. To je veškerá pointa tohoto vlákna.

style.paddingLeft=Math.ceil(630*Math.random());
Jestli ti to nebude takto fungovat, zkus přidat + "px". Prohlížeče jsou někdy (v závislosti na režimu) háklivé na to, že uvedeš rozměr bez jednotek.


Reaguji na petu:
javascript:void(0); to muzes zmenit na #
To ale dělá něco jiného. Jeho href nedělá vůbec nic, tvůj návrh přejde na „#“. Jeho href mi připadá lepší.


Reaguji na Lea:
Třeba z toho áčka odkaz jednou bude. Nevíme, v jakém vývojovém stádiu se nachází uvedený zdroják. Možná, že by arnir namířil href smysluplně, kdyby věděl, jak zrušit výchozí reakci na kliknutí.


Reaguji na Railbota:
Co by mělo dělat asi toto? Vlastnost display bez ničeho? Inline? Block? Nic?
To je zcela v pořádku. Tímto způsobem se ruší stylovací vlastnost v atributu „style“, takže prohlížeč bere její hodnotu odjinud. Je to efektivnější a mnohem obecnější, než psát natvrdo „inline“ či „block“. Názorné příklady:
1) Máš řádek tabulky <tr style="display: none"> a chceš ho stylem zviditelnit. Nastavíš-li „block“, Explorer ho zviditelní a Mozilla rozsype, protože „block“ není „table-row“. Nastavíš-li „table-row“, Mozilla ho zviditelní a Explorer zahlásí chybu, protože nezná hodnotu „table-row“. Optimální postup tedy není změna hodnoty, ale zrušení celého „display: none“. A to se udělá nastavení style.display = "";
2) Máš neznámý element se style="display: none". Nevíš, jaká je výchozí hodnota. Jak ho zviditelníš?
arnir
Profil
uz vse funguje staci nahradit:
document.getElementByID('da'+o+'a').style.display='none';
za:
var a = document.getElementByID('da'+o+'a');
a.style.display='none';


jinak diky za opravdu vycerpavajici prispevek chamurapiho.
# jsem tedy zpet nahradil za javascript:void(0);
a k tomu stylu zase pridam px. mas pravdu napriklad mozzile se to nelibilo bez px.
diky za vyreseni :)
Leo
Profil
"# jsem tedy zpet nahradil za javascript:void(0);"

Ani # ani javascript: do href nepatri, to pak neni odkaz (jen proto, ze jste pouzil znacku a), Leo
peta
Profil
arnir
getElementByID stale neni platna JS funkce :)
zkus se podivat na priklady na jakpsatweb, jak se ta funkce pise. Skutecne zalezi na velikosti pismen

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: