Autor Zpráva
kuba123
Profil *
Dala by se udělat funkce, která určí polohu myši nad obrázkem? Tato funkce by měla vracet true, pokud se kurzor myši objeví uvnitř obrázku ve vzdálenosti 40px od okraje. Používám JQuery.
kuba123
Profil *
Pomocí <img src=... onMouseOver='getMousePos(this, myFunction)'> chci spustit tuto funkci, ale hlásí mi to chybu

  var getMousePos = function (that, myFunction = Null){
    var imgWidth = $(that).width();
    var imgHeight = $(that).height();
    var imgPosition = $(that).position();
    imgPosition.left = Math.round(imgPosition.left); 
    imgPosition.right = imgPosition.left + imgWidth;
    imgPosition.top = Math.round(imgPosition.top);
    imgPosition.bottom = imgPosition.top + imgHeight;    
    console.log(imgPosition);
    if ( mousePos.x > imgPosition.left &&
         mousePos.x < imgPosition.right &&
         mousePos.y > imgPosition.top &&
         mousePos.y < imgPosition.bottom
        )
       {
       console.log("You clicked in the image");
       if ( myFunction )
         {
         return myFunction();
         }    
      }
  }

Nevíte co je špatně? Ještě jsem to ani nespustil (jen jsem načetl zbývající script, který ale bez této funkce funguje správně a bez chyb) a už mi to hlásí chybu.

Highlighted syntax
http://pastebin.com/cn0zkFvY


Respektive bych potřeboval poradit jak nahradit tuto funkci tímto:
$(function() {

$("span img").mouseover(
getMousePos(this, zoom);
);

}
Dostávám chybu setImage is not defined...

Protože $("span img") vrací objekt s obrázkem, ale jak tento obrázek dostat do this? A když getMousePos( .. ) nahradím za console.log(11111) tak taky dostávám chybu setImage is not defined
kuba123
Profil *
Mám to praveno, ale nefunguje to tak jak bych chtěl. Pomůže někdo?

$("span img").mouseover(
  function() { getMousePos( $(this), zoom); }
);
Sice vrací pozici myši, ale bohužel ne průběžně. Vrátí to pozici myši pouze při průjezdu kurzoru myši nad okrajem obrázku, nikoliv když pokračuju dál po obrázku...
Str4wberry
Profil
Aby ne, když se používá onmouseover, pokud to má reagovat na přejíždění po elementu, je k tomu onmousemove.

(Bez jQuery se dá pracovat s posicí myši takto.)
kuba123
Profil *
Díky, už to jede mnohem lépe. Ještě dotaz jak v JS přednastavit argument? Chybu jsem měl předtím zde:

var getMousePos = function (that, myFunction = Null){
}
tak jsem = Null odstranil
Chamurappi
Profil
Reaguji na kubu123:
Ještě dotaz jak v JS přednastavit argument?
Nijak. Nenastavené argumenty mají hodnotu undefined.
I kdyby popisovaná konstrukce byla v pořádku, tak by nefungovala, pokud bys neměl vyrobenou proměnnou jménem Null. Možná jsi měl na mysli spíš null.
kuba123
Profil *
jj nevím jestli JS rozlišuje velikost písmen. Chtěl jsem udělat nepovinný argument tak jak v php
pako
Profil *
navrh js6 s tym uz myslim pocita, ale to je hudba buducnosti
toto sa obchadza takto (ak nepotrebujes predavat 'false' hodnoty)
function func(a) {
  var a = a || 100;
}
Petr ZZZ
Profil
kuba123:
„nevím jestli JS rozlišuje velikost písmen“
Rozlišuje (na rozdíl např. od HTML a CSS, kde je to fuk).
Chamurappi
Profil
Reaguji na Petra ZZZ:
I v HTML a CSS jsou místa, kde na velikosti písmen záleží, třeba u názvů tříd. Nebo třeba v HTML u názvů entit: &Scaron; je velké Š, &scaron; je malé š.
V JavaScriptu záleží na velikosti písmen téměř všude, snad jedinou výjimkou je zápis čísel.
Petr ZZZ
Profil
Reaguji na Chamurappiho:
„I v HTML a CSS jsou místa, kde na velikosti písmen záleží, třeba u názvů tříd.“

Díky za rozšíření obzorů, přesto se zeptám: U názvů tříd záleží na velikosti písmen vždy, nebo jen když s nimi pracuje JavaScript (např. getElementsByClassName)?

(Zkusil jsem tento kód...

<style type="text/css">
  .rR {color:blue}
</style>
<p class="rr">text</p>

...a funguje, text je modrý.) (Zkoušel jsem to ale jen v IE.)
Str4wberry
Profil
Zkus to ve standardním režimu. :–)
_es
Profil
Str4wberry:
V quirk režime v rôznych prehliadačoch (hlavne IE a iné prehliadače) rôzne správanie a v štandardnom režime jednotné, či nie?
Str4wberry
Profil
Pokud si dobře pamatuji, tak citlivost na velikost je jen ve standardním režimu. V quirku by ten text měl být modrý ve všech běžných prohlížečích.
Petr ZZZ
Profil
Reaguji na Str4wberryho:
No jo, režim, ten já neřešil, uložil jsem celý ten kód jako html, podle hesla "jak funguje HTML – polovina tagů nepovinných" a šmitec. :-) Ale máš pravdu, po přidání <!DOCTYPE html> na začátek souboru už je text černý! (A tak nějak „standardně“ odsazený od horního okraje. :-)
_es
Profil
Str4wberry:
V quirku by ten text měl být modrý ve všech běžných prohlížečích.
Je to tak, pomýlilo ma, že v IE je štandardný režim vyvolaný aj značkou <!doctype>, ktorá v iných prehliadačoch vyvolá quirk režim.
Str4wberry
Profil
značkou <!doctype>, ktorá v iných prehliadačoch

Můžeš, prosím, uvést příklad takového <!docytpe>?
_es
Profil
Str4wberry:
příklad takového <!docytpe>?
Konkrétne, trebárs, presne:
<!doctype>
Snažil som sa „zmršiť“ značku tak, aby sa vyvolal quirk režim, čo sa aj podarilo, až na IE (IE8).
Str4wberry
Profil
Díky, nevěděl jsem, že něco takového jde. V Exploreru 10 už je to ale i tak modré.

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