Autor Zpráva
Radovan789
Profil *
Zdravím,
mám dva elementy a chci zjistit jestli alespoň na jenom je onmouseover (tedy vytvořit podmínku). Jak to mohu zjistit ?

Díky za rady.
Chamurappi
Profil
Reaguji na Radovana789:
zda li je onmouseover
<li> nikdy není onmouseover, první je element, druhé je atribut.
Radovan789
Profil *
Chamurappi:
oprava:
*zda-li
*jednom
Chamurappi
Profil
Reaguji na Radovana789:
Příště si po sobě přečti, co píšeš, než to pošleš.
Jestli je ten onmouseover nastavený atributem nebo skriptem jako vlastnost onmouseover, tak existenci ověříš snadno:
if(tvůjElement.onmouseover) alert("Má ho!");
Radovan789
Profil *
Reaguji na Chamurappiho:
„přečti, co píšeš“
Beru na vědomí.

Je možné že vtéto funkci je něco špatně když není splněna podmínka a přitom mám myš mimo oba elementy ?

  function hideSubmenu(element_id, link_id) {
    if (!document.getElementById(element_id).onmouseover && !document.getElementById(link_id).onmouseover) {
    $("#"+element_id).css("display","none");
    $("#"+link_id).css("background","#cc0000");
    }
  }
Spectator
Profil
pokud je <li> onmouseover, tak je onmouseover a vykoná se, co to se vykonat má
Witiko
Profil
Radovan789:
V javaScriptu se toto řeší událostmi. Tzn. není zde atribut, který by ti říkal, jestli myš je, nebo není nad elementem (ačkoliv se to asi dá zjistit, nejspíš nějak takto: document.elementFromPoint(event.clientX, event.clientY) ). Nicméně pokud se myš dostane nad element / sjede z něj, dojde ke spuštění funkce připojené jako posluchač dané události. Takže si udělej něco takového:

var jeTamTaMyš = false;
element.onmouseover = function() {
  if(!jeTamTaMyš) jeTamTaMyš = true;
};
element.onmouseout = function() {
  if(jeTamTaMyš) jeTamTaMyš = false;
};

A pak budeš testovat pomocí
if(jeTamTaMyš) zavolatKočku();
else sýrPředKrysíDírou++;
Radovan789
Profil *
Witiko:
Nějak mě to nefunguje:

<script>
  function checkmys() {
  var jeTamTaMys = false;
document.getElementById('link_01').onmouseover = function() {
  if(!jeTamTaMys) jeTamTaMys = true;
};
document.getElementById('link_01').onmouseout = function() {
  if(jeTamTaMys) jeTamTaMys = false;
};

return jeTamTaMys;
}

function start_it() {
if(checkmys()) alert("je tam");
}
</script>

<a href="#" onmouseover="start_it();" id="link_01">Přejeď</a>


Chybovou hlášku nevypisuje. A kdo tě učil programovat ? Od kdy se dává do proměnné diakritika ?
_es
Profil
Radovan789:
A kdo tě učil programovat ?
Z veľkej časti sa asi učil sám. Mal by si to tiež skúsiť, potom by si nepísal takéto dotazy ako hotentot.

Nějak mě to nefunguje
Nauč sa JS, nastav si vyššie využívanie mozgového potenciálu.
Celý ten tvoj kód je úplne nezmyselný.
Chamurappi
Profil
Reaguji na Radovana789:
JavaScript funguje v Unicodu, diakritika je v názvech identifikátorů dovolená a v ukázkovém skriptu i názornější.

Moc nechápu, o co se snažíš. Jestli chceš zavolat alert při onmouseover, tak zavolej alert při onmouseover:
<a href="#" onmouseover="alert('je tam');">Přejeď</a>

Události přiřazené do vlastností onmouseover a onmouseout se vyvolávají až při událostech onmouseover a onmouseout, takže přiřazovat je při onmouseover je trochu… divné.
Radovan789
Profil *
Reaguji na Chamurappiho:
„Moc nechápu, o co se snažíš.“
Vše co potřebuji jsem napsal v příspěvku [#1]

Reaguji na _es:
„Nauč sa JS, nastav si vyššie využívanie mozgového potenciálu. Celý ten tvoj kód je úplne nezmyselný.“
Můj mozeg nech napokoji. Nezmyselný je tvůj příspevěk.


Všechno co potřebuji mi už popsal Witiko. Pokud neexistuje jednoduší a kratší řešení tak bych tuhle diskusi uzavřel.
Chamurappi
Profil
Reaguji na Radovana789:
V prvním příspěvku se ptáš, jestli je na některém z elementů onmouseover. V dalších příspěvcích to vypadá, že se ptáš, jak zjistit, jestli je na některém z elementů myš, ale hotový kód řešící toto zadání sis nějak zašmouloval, jako kdybys chtěl něco ještě jiného…
Witiko
Profil
Radovan789:

Kdybys chápal, co jsem ti poslal, nedokázal bys splodit to, cos poslal v příspěvku [#8]. Takhle nějak už by to fungovalo:

<script type="text/javascript">
  var jeTamTaMys = false;
  window.onload = function() {
    var element = document.getElementById('link_01');
    element.onmouseover = function() {
      if(!jeTamTaMys) jeTamTaMys = true;
    };
    element.onmouseout = function() {
      if(jeTamTaMys) jeTamTaMys = false;
    };
  }

  function check() {
    return jeTamTaMys;
  }
</script>

<a href="#" id="link_01">Přejeď</a>


Musíš pochopit, že funkci onmouseover nevoláš ty. Ty ji jen nadefinuješ a k jejímu zavolání dojde až když najedeš na element myší. Nefunguje tak, že jí zavoláš a dostaneš zpět true / false. Jinak ohledně názvů proměnných a funkcí v javaScriptu jsou tu také určité konvence.

U konstant se píše velkými písmeny a místo mezer se odděluje dolní pomlčkou: NÁZEV_KONSTANTY
U proměnných se začne písmenem malým a místo mezer se píše následující písmeno velké: názevProměnné

Protože když se koukám na název funkce start_it, skoro se sám sebe ptám, kdo učil programovat Tebe. Ale rychle takové myšlenky zapuzuji a nerýpu. :)
Radovan789
Profil *
Witiko:
No jo no, když se napřed učíš PHP a potom se začneš učit javascript tak to takhle dopadá, v PHP bych nikdy háček v proměnné nepoužil (ikdyž to třeba jede tak je to pro mě barbarství) a podtržítko je v PHP funkcí uplně normální.
_es
Profil
Witiko:
Neviem, aký je rozdiel, medzi tvojím a Chamurappiho jednoriadkovým kódom.
Najprv definuješ ovládač onmouseover v atribúte, aby si ho potom neskôr prepísal v ovládači window.onload.
Witiko
Profil
_es
Vycházel jsem přímo z Radovan789ova kódu a nevšimnul jsem si, že přiřazuje mouseover už na tom odkazu. Opraveno.

Radovan789:
Obvykle nepoužívám v názvech proměnných háčky a čárky, ale - jak správně rozpoznal Chamurappi - použil jsem je zde z důvodu větší názornosti. Stejně tak bys mi mohl vyčítat, že volám funkci zavolatKočku a měním nedeklarovanou proměnnou sýrPředKrysíDírou.

Jo a PHP je děsivý bordel.
Radovan789
Profil *
Witiko:
Jo a PHP je děsivý bordel.
Mám přesně opačný názor.

No tak děkuji za ukázky a vysvětlení jak to vtom JS vlastně funguje.

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