Mivel a kiemelt kódrészlet egy NodeList-et ad vissza, ezért egy ciklust és egy elágazást. Na jó, egy fél elágazás (csak az if ága) bőven elég lesz hozzá. Végigmászol egy ciklussal rajta, és ha checked akkor kiírod a value-t és leállítod a ciklust. A többit rádbízom, innen már mennie kell.
Akkor legyen úgy, hogy csinálsz még egy mouseout eseménykezelőt a linkek szülőelemére és az cserélje le a képet a 999-re.
Egyébként a jQuery dologgal arra próbáltam rávilágítani, hogy a DOM fából elég kikeresni az elemet a JS legelején és eltenni változóba, majd az eseménykezelődben már ezt a jQuery "resultsetet" felhasználni. Apró kódnál nincs túl sok jelentősége, de előbb-utóbb minden kód elhízik és akkor már lesz.
Tudom, de amúgy is ott van csillió más dolog miatt.
A késleltetést arra akarom használni, hogy ne villantsa be az alapképet, amíg a júzer áthúzza a kurzort az egyik linkről a másikra, csak akkor, ha elvitte azt a linkek fölül. Ha viszont egy ciklust teszek be, akkor be fogja villantani, mielőtt reagálna az újabb mouse inre, nem?
Vagyis tégy bele egy ciklust, ami egy kis ideig pörög tétlenül. Hogy ez mennyire fogja le az erőforrásokat, abba még nem gondoltam bele, de egy próbát megérhet.
Az viszont biztos, hogy a jQueryt feleslegesen tornáztatod ( $('#make_photos') ) minden egyes mouseover és mouseout esemény kiváltódásakor.
Ha statikus oldalakat akarsz kezelni, használj egy olyan website letöltő programot, mint pl. a HTTrack. Ez leszedi neked a kép- és egyéb file-okat is. A helyi másolatba már bármit beleírhatsz és kedvedre nézegetheted a DOM-ját.
Help. Van egy <a> elem, aminek van onmouseover és onmouseout eseménye. Mindkettő egy <img> elem src attribútumát változtatja: az in a saját fotójára, az out az alapképre. Több <a> is van.
Szeretném az out esemény végrehajtását késleltetni, hogyha a júzer szörföl az <a> elemek felett, akkor ne villanjon be mindig az alapkép. Azt hittem, hogy könnyen megúszom és így írtam meg a kódot:
function changePix( id ){ if ( id !== 999 ){ $('#make_photos').attr('src', './images/' + id + '.jpg'); } else { $('#make_photos').delay(1000).attr('src', './images/999.jpg'); } }
Az oldal betöldődésekor az src=999.jpg. Az in eseményre mindig más id-t kap, az outra mindig a 999-et. A gond az, hogy a kód nem késleltet, hanem az <a> elemek felett szörfölve mindig bevillan az alapkép (999.jpg). Hol a hiba?
"Azt hiszem a $.load() jquery-s metódus nem jó nekem, mert az külső domain-eknél nem ad vissza semmit."
Még talán jó is lehetne, ha a harmadik fél ezt engedélyezné. Hint: CORS. Vagy pedig saját oldaladon keresztül kéred le, de ehhez backenden is kell egy keveset kódolni. CURL, meg ilyenek, mivel az esetek többségében PHP hajtja a kisebb weboldalakat.
Egyébként miért kéne ez neked? Mi a célod ezzel? Csak mert lehet, hogy van más megoldás is, pl bookmarklet, greasemonkey script, stb. Meg az is lehet, hogy technikai dolgok helyett valami jogi hülyeségbe botlasz és azon húznak majd el.
Nem véletlen, hogy ez nem működik, biztonsági okokból van letiltva. AJAX-szal csak addig tudsz elmenni, ha nyitsz egy új ablakot, abba az AJAX szerveroldal által kiolvasott forráskódot kiírod, majd a ready event után a DOM rendelkezésre áll. Ez esetben viszont csak és kizárólag a HTML forrás lesz feldolgozható, sem a képek, sem egyéb fájlok nem állnak rendelkezésedre és az így betöltött oldal nem végzi el a dimamikus módosításokat sem. Ergo, egy statikus HTML feldolgozására van mód, másra nincs.
Azt szeretném megtudni, hogy a görgetősáv pozícióját hogyan tudom lekérdezni?
Illetve a helyzetét tudom-e változtatni (kiszámolt pozícióba görgetni az oldalt)?
Az oldalon van egy fő canvas, itt csupán egy padding elem van előtte. Itt működik szépen az egér kordináták lekérdezése. Azonban van felül egy fixen pozícionált div, (ebben van többek közt a másodlagos canvas is), ebben az egér pozícióját nem tudom lekérdezni. Egyszerűen beleszól a görgetősáv, tehát ha lefelé görgetem az oldalt, akkor ez az egér pozíciójába megjelenik, holott az a rész az ablakhoz mérten fixen ott marad...
Köszönöm. Nem teljesen értem még mit csinál (csupán átfutottam), de az látszik hogy itt is 1:1 arányú canvasokat hoz létre.
Egyelőre ugyan nincs sebesség gondom, de még nagyon az elején járok (úgy a scripttel mint a tanulással), s szeretném ha ez így is maradna, ezért kérdezem a tőlem okosabbakat.
Sajnos nem jó kis méretben létrehozni, mert akkor nem tudok rá szépen rajzolni. Tehát a nagy vászonra rajzolt vékony vonalat nem tudom a kicsin megrajzolni, illetve minden vonalat külön ki kellene számolni (ha látszik egyáltalán, akkor a színét is).
Csak arra gondoltam amikor kérdeztem, hogy esetleg képként le lehetne kezelni vagy hasonló.
Esetleg ha a kissebbett eleve kissebb meretben hozod létre? Persze ez csak akkor érdekes, ha valóban többlet-et jelent a canvas elkészítése nagyobb méretben mintsem kissebben.
Tehát autót szereltek? Jó. Legközelebb, ha szükségem lesz rá, felhívlak titeket, hogy "valami elromlott a kocsimon, meg tudják mondani telefonon, hogy mi baja lehet"? :-))
Szóval: milyen "a programot"? Továbbá írd le, légy szíves, pontosan a hibaüzenetet, mert egészen biztosan nem így szól. Milyen operációs rendszer, milyen gép, és még amit tudsz róla.
Sziasztok! Autódiagnosztikai rendszerhez szeretnénk a programot használni, de azt a figyelmeztetést kapjuk: JavaScript figyelmeztetés: Execute the Internet Explorer, és el sem indul. Újratelepítettük már a programot is, de nem működik. Tudnátok segíteni?
Mámeg. jQuery, és kézzel rakod össze a JSON-t? Ugyan minek? Mondjuk, használhatnátok a jQuery json-RPC pluginját... Aztán akkor van egy szimpla hívás, abban megadod a metódust, egyben odaadod neki az elküldendő objektumot, és viszlát... De ha véletlenül RPC mégsem kell, akkor is: JSON.stringify(foobar), és kész.
Egyebekben, hogy a szerveretek mit hogyan értelmez, azt nála kellene megnézni.
Hát igen. Vagy csoda történik, vagy ki kellene nyomozni, akár az 'alert' utasítás használatával is (azért vannak fejlettebb eszközök is JS debuggolására).
Sehogy. Vizsgáljátok meg, és azt debugoljátok ki, mi érkezik meg szerver oldalon.
Amúgy nincs értelme annak amit írtál: Ha a caseId nevű paramétert int ként teszem bele a json stringbe, akkor int-ként megy át, ha string ként akkor stringként megy át,.. mert a json string maga ugyanúgy "{'caseId':10}" Nyilván ha mindig ez menne át az mindig egy fajta módon érkezne is meg.
Sziasztok, egy rejtélyt kellene felfedezni, mert a megoldás végül meglett, csak azt nem értjük miért.
Adott egy Jquerys AJAX hívás, ahol az adatok JSON stringben száguldoznak. Na most a JSON paramétert a következő képpen raktuk össze:
var parameter = "{'caseId':"+caseId+"}";
tehát a legenerált json string a következőképpen néz ki: "{'caseId':10}". Ez így valid is, minden ok, megtörténik a hívás. De itt kezdődik a rejtély.
Ha a caseId nevű paramétert int ként teszem bele a json stringbe, akkor int-ként megy át, ha string ként akkor stringként megy át, ami azért
tűnik nekem illogikusnak, mert a json string maga ugyanúgy "{'caseId':10}". A 10-es értéknek akkor kellene stringnek lennie csak, ha aposztrofok közé teszem. És mégis, a Szerver oldal valahonnan tudja, hogy az string (ha úgy lett átadva) még akkor is ha az összepakolt JSON stringből ez nem derül ki.
Nem olvastalak figyelmesen, a background-color és a backgroundColor speciel pont itt nem ekvivalens, máshol igen.
Van oka, és akkor már könnyű megérteni, miért van több, és mikor melyiket. A CSS-ből kell kiindulnod, ott background-color a használatos formátum. Mivel ez a kötőjel miatt kivonásnak minősülne, ha egy programozási nyelvben változónak vagy mezőnek használnád:
element.style.background-color, az nem más, mint element.style.background mínusz color, ami nyilvánvalóan nem használható, ezért vezették be a programozók kényelme kedvéért, hogy az ilyen többtagú kifejezéseket úgy lehet megadni, hogy element.style.backgroundColor. Ott, ahol nincs ilyen félreértési lehetőség, mert például stringként adod meg:
Annyiszor mondtam már, de fogom még egy párszor. :-) Aki most ismerkedik a JS-sel, hagyja ki a nyers JS-t, és tanulja a jQuery-t. Sokkal egyszerűbb, sokkal többet tud, komolyabb felhasználásnál amúgyis egyeduralkodó, a nyers JS alig kell valamire manapság. Itt van hozzá egy jó könyv: http://www.sitepoint.com/books/jquery1/
background-color és backgroundColor egyszerűen ekvivalens ebben az esetben, mindegy, melyiket használod.
Szimpla vagy dupla idézőjel tetszés szerint. Szokj rá az egyikre, amelyik neked szimpatikusabb, használd azt, és ha más kódjában a másikat látod, annyi baj legyen. Célja egyébként csak az, hogy ha egyiket használod, a másikat könnyű beleírni egy stringbe:
"It's good."
'A " karakter idézőjel.'
Vagy pl. le van írva világosan az alábbi szintaktika: element.style.backgroundColor="color" amiből számomra az derülne ki, hogy ha pl. ezt írom egy scriptben: div.style.backgroundColor="red" akkor ott a DIV elemekre működni kéne valaminek és mégsem jó! ???
Nem, nem azt jelenti. Az element egy változó, amiben konkrétan egy objektum szerepel. Nem azt jelenti, hogy <element>, mint ahogy ha használsz egy div nevű változót, az sem azt jelenti, hogy mindenképpen egy <div> elem van benne. Bármi lehet, és ha olyan, aminek van stílusa, a második példádnak csak akkor van értelme. De nem véletlenül emlegetem annyit a jQuery-t, ugyanis abban valóban ilyen egyszerű, amit akarsz:
$("div").css("background-color", "red");
vagyis valóban kiválasztod mindegyik <div>-et, és valóban ezeknek változtatod meg a színét.
Próbálom tanulgatni ezt a JS-t, de már lassan ott tartok hogy kimegyek és lerágom az udvaron a füvet kínomban, mivel akárhogy próbálkozom, egyszerűen a neten fellelhető faék tananyagok és jelzett szintaktikák nem működnek, ha össze akarok belőle vami kissé bonyolultabbat rakni.
A gondok szerintem abból fakadnak, hogy a JS elvileg képes HTML-t és CSS-t is kezelni, de a szintaktika marhára nem mindegy, hogyaszongya pl. miért használnak néhol ' jelet és néhol " jelet???
Vagy pl. le van írva világosan az alábbi szintaktika: element.style.backgroundColor="color" amiből számomra az derülne ki, hogy ha pl. ezt írom egy scriptben: div.style.backgroundColor="red" akkor ott a DIV elemekre működni kéne valaminek és mégsem jó! ???
Van olyan példa, hogy document.body.style.backgroundColor="red" és ott működik, de ha kiszedem a body tagot és div-re vagy másra cserélem, már ismét semmit nem csinál! ??? Na itt jön a fűrágás, mert ami logikusan adná magát, az egy példa scriptben működik, de ha átírom a logikának megfelelően, akkor semmi. :(
Aztán ott van hogy néhol lehet bgcolor, másütt (pl. css-nél) csak background-color itt fentebb meg backgroundColor és ez sem világos, hogy mire fel 3 szintaktika, ha hol egyikkel hol másikkal működik???
Az alábbi kódot sem értem miért nem megy, elvileg minden helyes benne, de itt még az volna kérdésem, hogy a függvények zárójelei van hogy üresek, mint itt is, némely példáknál a THIS szó szerepel benne vagy hogy pl. (X.THIS) és ugyanez az onmouseover stb eseménykezelők adta zárójeleknél is előfordul néha. Ezeknek sem látom a lényegét át és főleg azt nem tudom, hogy hol lennének ezekről a dolgokról leírva pontos tudnivalók, mert hiába nézem a netes példa kódokat, azok ilyen mélységben csekély magyarázatot se adnak.
Már gondolkoztam hogy kiveszek valami Javascript 24 óra alatt c. könyvet vagy mittom én mit lenne célszerű, ahol nem ilyen netes w3school szintű követhetetlen példaprogramokkal dobálóznak.
Kösz mindenkinek aki segíteni próbál, tudom minden kezdet nehéz, de hát most ez van. :(
Ím aminek elvileg működni kéne:
<span onmouseover="f1()" onmouseout="f2()">valami tetszőleges szöveg amin majd látszik a változás...</span>
<script> function f1() { document.getElementsByTagName("span").style.backgroundColor="red"; } function f2() { document.getElementsByTagName("span").style.backgroundColor="white"; } </script>