Autor Zpráva
janiy77
Profil *
hele potreboval bych nastavit ze pri kliknuti na neco to klikne na neco jineho.
na co to prirazuju a na co to klikne se meni a bylo by slozito snaziti se o to jinak tak prosim jen a jen o radu jak na toto(priklad):
function d(a,b){document.getElementById(a).setAttribute('onclick',document.getE lementById(b).onclick())}
a nefunguje to ani takto:
function d(a,b){document.getElementById(a).onclick=document.getElementById(b).o nclick()}
no a stezuje si mi to na to, ze nastavuju document.getElementById(b).onclick(); ale jak to udelat jinak?(teda tak aby to nechybovalo)
janiy77
Profil *
neporadite mi tedy proc nejde:
e.onclick=a.onclick();
??
chci jednomu prvku priradit ze kdyz se na nej klikne tak to znamena kliknuti na jinej.
konkretne to pouzivam v hraskove navigaci
Chamurappi
Profil
Reaguji na janiy77:
Zmíněné a.onclick() je volání funkce, tj. do e.onclick přiřadíš její výsledek. Což asi není záměr. Vyhoď ty závorky.
Přes metodu setAttribute nejde spolehlivě nastavit událost onclick, marně to zde bylo párkrát zkoušeno.
peta
Profil *
var isIE=(document.all && !window.opera)?1:0;

function setxEvent(x,xEvent,xFunction)
{
if (isIE) {x[xEvent]=new Function(xFunction);} //IE
else {x.setAttribute(xEvent,xFunction);} //other
}

viz Chamurappi, pres e.onclick to sice jde, ale musis to umet a ma to problemy s viceto druhy prohlizecu. Kdezto setAttribute je 100% spolehlive, ale to zase nezna IE smejd. Respektive zatim se mi to nepodarilo spolehlive napsat pres 1 radek, ale zcela spolehlive funguji 2 radky.

Kde mezi
xEvent="onclick";
x[xEvent]=
x.onclick=
x["onclick"]=
x[onclick]=
by nemel byt rozdil, snad
Chamurappi
Profil
Reaguji na petu:
ma to problemy s viceto druhy prohlizecu
Nemá. Naopak právě tohle funguje na 100 %.

Kdezto setAttribute je 100% spolehlive, ale to zase nezna IE smejd.
Vyjma Mozilly, Opery a (možná) KHTML ti tato metoda funguje kde?

Tvůj postup se tedy nejprve nejistým způsobem pokusí detekovat Explorer -- zároveň s ním chytne i iCab a OmniWeb 4.2 -- a pak v těch prohlížečích, které podle něj Explorer nejsou, použije dost netradiční a nespolehlivý způsob.
peta
Profil *
Chamurappi
Vyjma Mozilly, Opery a (možná) KHTML
... netscape, prohlizece macOs a pod.
Kdezto onclick spolehlive funguje jen v IE.
Podivej, delal jsem s tim pokusy, zakomentoval jsem prislusne radky a ve FF mne to zlobilo, ze to nekde onclick dalo, jinde ne a cas od casu to vypadlo uplne (xatchat/portal/)
Chamurappi
Profil
Reaguji na petu:
netscape, prohlizece macOs a pod.
Netscape je Mozilla. Ve starších Netscapech bude naopak fungovat jen vlastnost onclick, stejně tak ve starších prohlížečích pro Mac (a možná i v aktuálních).

Kdezto onclick spolehlive funguje jen v IE
Ne, ten právě funguje již od dob Netscapu 3.0 všude.

Podivej, delal jsem s tim pokusy
A ty se zase podívej, že tohle používá 90 % webů, které se snaží vyhnout atributům, a žádný problém s tím nemají. Já sám to používám také všude možně. Již mnoho let a bez jediné stížnosti.
Šíříš drby na podkladě špatně provedených pokusů, neumíš identifikovat problém.

ve FF mne to zlobilo, ze to nekde onclick dalo, jinde ne
V tom případě byla chyba jinde. Z hlediska prohlížeče, kde funguje jak metoda setAttribute(), tak vlastnost pojmenovaná po události, je úplně jedno, jak tu událost přiřadíš.

xatchat/portal/
Nejsem jasnovidec. Občas chytáš zdejší tazatele za slovíčko, že neumí popsat svůj problém. Sám ale neumíš popsat řešení, jen sem vždy vlepíš odkaz, který je často mnohem více k ničemu, než špatně položený dotaz.

Vyrob malou pokusnou stránku, kde bude vlastnost onclick v Mozille zlobit.
peta
Profil *
Chamurappi
Chyba jinde nebyla, byla prave v tom. Pred tim jsem ten script vyladil.
Pokusnou stranku delat nebudu, protoze tam pouzivam asi 20k scriptu pro pridavani radku a pod a jeste to spolupracuje s DB. Nez bych z tama vyhodil potrebne a nepotrebne, toz to radeji budu mlcet a myslet si sve :)
peta
Profil *
Chamurappi Takhle, jestli chces, vyrob ty nejakou stranku, kde pres nejake tlacitko input pridas za kazdy klik div do divu s parametry onclick na nick1, nick2.

div id="plocha"
\n<div id=i123 class=barva3> <span title=cas>12:34 </span> <span class=nick onclick="pridej()" PETA </span></div>

Takhle nejak, pres DOM, a ne pres innerHTML aspon 10 zprav aby se to dobre zabarvovalo i v IE

pak tam je script ktery dela refresh

Atd, atd
Tak ja nevim, v cem byla chyba, ale v okamziku, kdy jsem nechal jenom
x[xEvent]=...
tak mi ve FF vypadl efekt onclicku.
Je mozne, ze jsem ten script pak pozmenil na nynejsi podobu, ale dost o tom pochybuji.

http://xatchat.sk/....portal/chat_index.php?loc=4&sid=
problem je, ze bez registrace se na
http://xatchat.sk/....portal/
nelze prihlasita po registraci te odkaze ne uvodni stranku, ktera te tam nepresune. Takze to prihlasovani je kapanek slozitejsi :)
Chamurappi
Profil
Reaguji na petu:
Pokusnou stranku delat nebudu, protoze tam pouzivam asi 20k scriptu pro pridavani radku a pod
Proto jsem psal „vyrob malou pokusnou stránku“. Minimální příklad, na němž bude vidět běžné chování kódu izolovaného od veškerého potenciálně chybujícího zbytku. Rozhodně jsem po tobě nechtěl, abys pracně dával dohromady 20 kB skriptů jen proto, abych se v nich zase já pracně zorientovával.

Chyba jinde nebyla, byla prave v tom.
Jak to můžeš vědět, když nejsi schopen izolovat a reprodukovat chybující část?

pak tam je script ktery dela refresh
To je sice roztomilé, ale s onclickem to vůbec nijak nesouvisí.

Takze to prihlasovani je kapanek slozitejsi :)
Mě nezajímá přihlášení, mě zajímá onclick.

Dobře, vyrobím minimální příklad sám. Tento dokument krásně funguje:
<big>Klikni na mě</big>

<script>
document.getElementsByTagName("big")[0].onclick = function()
{
var d = document.createElement("div");
d.appendChild(document.createTextNode("Na mě jde taky kliknout"));
document.body.appendChild(d);
d.onclick = function()
{
alert("Opravdu jde.")
};
};
</script>
Funguje i v Mozille, že? Tak kde jsem udělal chybu, že mi funguje?
peta
Profil *
Chamurappi
Ok, tak mas pravdu, takhle to asi funguje. Tvuj priklad funguje.

nicmene ja pouzivam kapanek jinou stavbu:
xEvent="onclick";
xFunction="start()";
x[xEvent]=new Function(xFunction);
abych si mohl vybrat ktery event pouziji.

Ale jak jsi poznamenal, mohlo to vzniknout spojenim vice veci najednou. Zkratka jsem to potreboval a stravil jsem asi den hledanim ruznych zapisu...
Neci to resit, proste tvuj priklad jede, kdyz pouzije ten, bude to oki, kdyz pouzije muj, pro bezne prohlizece je to oki, takovy mackovy icab jsem nezkousel...
Leo
Profil
"nicmene ja pouzivam kapanek jinou stavbu:
xEvent="onclick";
xFunction="start()";
x[xEvent]=new Function(xFunction);"

Proc proboha new Function? Leo
peta
Profil *
Leo
a jak tedy?

a = "natalka";
b = 6;
c = ["a",b,7];
xEvent="onclick";
xFunction="start("+a+","+b+","+c+",'melanie')";
x[xEvent]=new Function(xFunction);"
Toto téma je uzamčeno. Odpověď nelze zaslat.