Autor | Zpráva | ||
---|---|---|---|
arnir Profil |
#1 · Zasláno: 18. 7. 2008, 23:09:12 · Upravil/a: arnir
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 |
#2 · Zasláno: 19. 7. 2008, 07:32:31
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 |
#3 · Zasláno: 19. 7. 2008, 07:58:07
"<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 |
#4 · Zasláno: 19. 7. 2008, 10:44:28
...style.display=''"
A dál. Co by mělo dělat asi toto? Vlastnost display bez ničeho? Inline? Block? Nic? |
||
arnir Profil |
#5 · Zasláno: 19. 7. 2008, 13:04:37
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 |
#6 · Zasláno: 19. 7. 2008, 13:19:19
uz jsem na to asi prisel diky
|
||
Chamurappi Profil |
#7 · Zasláno: 19. 7. 2008, 15:58:46 · Upravil/a: Chamurappi
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 |
#8 · Zasláno: 19. 7. 2008, 21:02:36 · Upravil/a: arnir
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 |
#9 · Zasláno: 19. 7. 2008, 21:05:01
"# 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 |
#10 · Zasláno: 20. 7. 2008, 20:31:26
arnir
getElementByID stale neni platna JS funkce :) zkus se podivat na priklady na jakpsatweb, jak se ta funkce pise. Skutecne zalezi na velikosti pismen |
||
Časová prodleva: 16 let
|
0