Autor Zpráva
Qwerty
Profil
Zdravím, mám menší problém s funkčností javascriptu.
Podle návodu na tomto webu jsem zkusil ovlivnit vhled buňky přejetím myší.

<style>
.boryellow {border: 3px solid yellow}
.borblue {border: 3px solid blue}
</style>

následující událost funguje:

<td name="third" class="boryellow" onmouseover="this.className='borblue'" onmouseout="this.className='boryellow'">cell</td>


Další věc byla, že kliknutí na odkaz dokáže změnit jiný element (opět podle webu), např prázdný obrázek, nikoliv však elementy <td>, <span> nebo <div>, ...

Zkoušel jsem různé způsoby odkázání na potřebný element (viz níže), ale při vložení jména výše zmíněného elementu se vykonávání javascriptu zastavilo.

      <a href="#" onclick="document.all.xxx.className='borblue'; document.all['name'].className='borblue'; document['abc'].className='borblue';">click me</a><br>
      <img name="xxx" class="boryellow">
      <span name="spanx" class="boryellow">text in span</span>
      <br>
      <img name="name">
      <img name="abc" border="0">

Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Chamurappi
Profil
Reaguji na Qwertyho:
Zkoušel jsem různé způsoby odkázání na potřebný element (viz níže)
Zkus document.getElementById('ídéčko') v kombinaci s atributy id (nikoliv name).
Qwerty
Profil
no safra :D

abych se přiznal, s tím IDčkem jsem to zkoušel i předtím, ale nechtělo se mi to tu vypisovat, nicméně teď jsem to zkoušel nanovo, jak jsi mi napsal a funguje to. díky, supr!
<td name="third2" class="boryellow" onmouseover="this.className='borblue'" onmouseout="this.className='boryellow'">cell</td>
<td name="third3" class="boryellow" onmouseover="document.getElementByName('third3').className='borblue'" onmouseout="document.getElementByName('third3').className='boryellow'">cell</td>
<td id="third4" class="boryellow" onmouseover="document.getElementById('third4').className='borblue'" onmouseout="document.getElementById('third4').className='boryellow'">cell</td>
<td id="third5" class="boryellow" onmouseover="document.getElementById('third4').className='borblue'" onmouseout="document.getElementById('third4').className='boryellow'">cell</td>


První a třetí buňka (third2 a third4) ovlivní samy sebe, druhá nefunguje (getElementByName), poslední funguje a ovlivní jinou buňku. Někde jsem předtím musel udělat chybu, proto mi to nefungovalo.

ještě jednou díky
_es
Profil
Qwerty:
O niečo efektívnejšie je priradenie udalostí až v kóde JS:
document.getElementById('hodnota id').onmouseover = function(){/* príkazy */};
Qwerty
Profil
_es:
nejsem si přesně jist, co tím myslíš. Jakože napsat zvlášť buňky a zvlášť JS kód?

Jak by vypadala syntaxe buněk third4 a third5 v případě, jak říkáš ty?
_es
Profil
Qwerty:
Jakože napsat zvlášť buňky a zvlášť JS kód?
Áno tak. Aj sa potom v tom budeš ľahšie orientovať, ak nebudeš mať v HTML kóde rozptýlený JS kód.

Jak by vypadala syntaxe buněk third4 a third5 v případě, jak říkáš ty?
Nejako takto, buď použiješ this, alebo document.getElementById:
document.getElementById('third4').onmouseover=function(){this.className='borblue';};
Ďalšie udalosti a atribúty podobne.
Qwerty
Profil
_es:
A kam to mám napsat, aby se to vykonalo?

budu mít html kód tabulky (čistě, bez javascriptu) a pod tím tohle? (např) (to by mimochodem nepochopilo "this", nebo jo?)
<script>
document.getElementById('third4').onmouseover=function(){document.getElementById('third4').className='borblue';};
</script>


A je pravda, že by mi to pak dělalo bordel, mám totiž tabulku o šířce tří sloupců.
V prvním sloupci je několik buněk v rowspanech, podle kategorie produktů, které jsou v druhém sloupci a ve třetím sloupci jsou ceny.

Čeho chci docílit je, aby při přejetí myší buňky s produktem nebo cenou se rozsvítily právě k sobě patřící buňky s produktem, cenou a kategorií, kam patří a při přejetí kategorie, aby se rozsvítil celý blok buněk
_es
Profil
Qwerty:
budu mít html kód tabulky (čistě, bez javascriptu) a pod tím tohle?
Tak nejak.

to by mimochodem nepochopilo "this", nebo jo?
This je objekt, v ovládači udalosti, kde vznikla udalosť.
Takže môže byť aj tá istá funkcia priradená viacerým udalostiam rôznych objektov, napr:
function f(){alert("Id tohoto elementu je  " + this.id);}
document.getElementById('ID1').onclick = document.getElementById('ID2').onclick = f;
Qwerty
Profil
_es:
Fajn, vypadá to, že mi návod k javascriptu, jak je tady stačit nebude. :)Díky za poznatky (zrovna tento poslední použiju), jak tedy při přejetí buňky vyvolám danou událost?

Teď když jsi mi řekl, že je lepší nepoužít zápis v tagu (např.) <td ...... onmouseover=" událost; "> ale zápis
function f() { událost; událost2; kupa-událostí...; }
document.getElementById('id1').onmouseover= f;

tak kam do html kódu ho mám napsat, aby se daná událost s danou buňkou, při přejetí myší, provedla?
_es
Profil
Qwerty:
kam do html kódu ho mám napsat, aby se daná událost s danou buňkou, při přejetí myší, provedla?
Niekam do značky script umiestnenej až za tou bunkou, alebo aby bol ten JS kód inak vyvolaný až vtedy, keď už existuje element tej bunky, napríklad po udalosti window.onload.
peta
Profil
Qwerty:
Ale, ale, toho mas plny jakpsatweb, preci :)))
jak se pisi funkce, jak se pracuje s dokumentem a fura prikladu je tam.
http://peter-mlich.wz.cz/web/js/prjpw/index.html
Bublina z title odkazu (DOM)
http://peter-mlich.wz.cz/web/js/prjpw/index.html#udalosti

// definuje funkci
function f() { událost; událost2; kupa-událostí...; }
// prirazuje udalost prvku s id
document.getElementById('id1').onmouseover= f;
Jinymi slovy cele toto prijde mezi tagy script, presne takto zapsane potom pod tabulku. Cili napises tabulku, pod ni pak priradis pres js bunce s id nejakou udalost. A do html kodu pak nemusis nikde sahat, krome zapisu toho id
...
<td id=moje123>...
</table>...
<script>
....
Qwerty
Profil
díks moc všem zůčastněným, nyní považuji tento můj problém za vyřešený.
S Pozdravem

Qwerty

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:

0