Sajnos öregszem, nem mindíg tudok világosan fogalmazni.
Az alapötlet az volt, hogy egy javascript függvény megállapítja a felbontást, és annak ismeretében adja meg a betöltendő kép új méreteit. Felhasználói beavatkozás
Ez a méret nem felel meg az adott felbontásanak, annak ismeretében más méretekkel kellene a képet betölteni.
Erre jöt az ötletem, s kérdeztem, hogy megvalósítható e valahogy.
<img src="kep.jpg" alt="" title="xy" border="0" style="width:javascript:uj_meret(500);height:javascript:uj_meret(168);"> (ez most szintaktikailag nem helyes)
A lényeg, nem fix méret, hanem függvénnyel előállított mérettel kellene a képet betölteni.
Köszönöm. Ezt napok óta próbálom, de nem működik. lehet hogy szintaktikai hibám van.(width idézőjellel kezd, javascript idézőjelben,) Nem kerül a függvényre a vezérlés. Onclickre működik, a függvény jó értéket ad.
Meg lehetne e azt csinálni, hogy az img width, height értékeknek javascript funkcióval adjak értéket. Figyelembe véve azt, hogy -megbízható források szerint- a scriptek(function) csak valamilyen eseménykor futnak.(onclick,onload,onmouse... stb) Az onload úgy tudom, amikor az image már betöltődött, akkor keletkezik.
Valahogy betöltődés előtt kellene értéket adni a width, height értékeknek.Pl. width:javascript:meret1(); height:javascript:meret2(); Köszönettel m_kovacs
Köszönöm válaszát.Fárasztó volt ez a nap, meg a hőség is nyomja az agyamat, lehet hogy ezért, de első olvasatra nem kristálytiszta számomra a javaslata.
Ha a 'masvalami.html' egy konstans hivatkozás, akkor nem vagyok előbbre. Alszom rá, hátha megvilágosodom.
Ez a sor működik! DE én a felbontástó függően a href-be dinamikusan szertnék file-nevet generálni.Na ez már nem működik. A file-név megszületik, létező file, csak nem tudom hogy kell rávennem, hogy betöltődjön.
Nem. Két okból: egyfelől honnan tudnánk, hogy 1 másodperc, több, mennyi? Másfelől, a böngészőben a JS egy szálon fut. Szigorúan tilos megvárakoztatni, mert akkor nem reagál a felhasználóra. Éppen ezért nincs is olyan a JS-ben, amivel tudnál várakozni (van egy időzítő, de az is visszahívással operál, tehát semmivel nem vagy előrébb, sőt, mint a korrekt módon).
Jobb ehhez hozzászokni már a kezdet kezdetén, mert ahogy mondtam, minden így megy a JS-ben; úgysem lehet kikerülni.
1. lépés
2. lépés
3. lépés: visszahívás = (
4. lépés
5. lépés
6. lépés: visszahívás = (
7. lépés
8. lépés
9. lépés
)
)
Mindened alapvetően ilyen lesz, sőt, még ilyenebb, mert közben a hibalehetőségeket is le kell kezelned, hogy mi van, ha valamelyik lépés nem sikerült...
Egyébként, amibe ilyenkor bele szoktál futni, az a JS aszinkron működése. Ez néha jól jön, néha kifejezetten kellemetlen, de akárhogy is van, a JS ilyen, ezt számításba kell venni. Ha veszel egy ilyen elvi utasítássort:
1. csinálunk egy képet
2. beleolvasunk valamit
3. lekérdezzük a méretét
4. csinálunk vele valamit
az nem fog működni. Ugyanis a 2. elmegy valahova a háttérbe beolvasni, de te rögtön továbblépsz a harmadikra, és amikor lekérdezed a méretét, az a kép még messze nem olvasódott be, tehát nem fogsz érvényes értéket kapni vissza. A JS-ben minden ilyesmit így kell megoldani:
1. csinálunk egy képet
2. megkérjük, hogy olvassa be.
2a. megmondjuk, hogy majd ha beolvasta, hol szóljon vissza, hogy értesítsen az eredményről
3. egyébként továbbmehetünk, és csinálhatunk mást, de nem függhetünk a 2a eredményétől
Ha például úgy kell továbbmenned, hogy igenis szükséged van a beolvasás eredményére, akkor nincs 3. pont. Akkor a 2a-ban kell felhasználnod az eredményt, és ott menni tovább annak ismeretében.
Nem, nem lehet. És végig a böngészőben levő méreteket kérdezgeted, nem a kép tényleges méretét (ha arra van szükséged), tehát ez így, ahogy van, nem is fog menni soha.
És újfent elmondom, amit már annyiszor: szerintem, aki kezdő JS-ben, az is csak jQuery-vel próbálkozzon. Régóta nincs már semmi értelme a nyers JS dolgaival bajmolódni.
Megint elakadtam.Így már működik FF alatt.Viszont Google Crome ban a működése kiszámíthatatlan. Mivel ez a funkció többször futhat egymás után,kiszámíthatatlanul a Crome-ban az utolsó két sor időnként 0-át ad. IE10 alatt ki sem tudom próbálni, az meg a window.open.... re allergiás. Most olvasok,olvasok,olvasok...(és anyázok!) Köszönettel m_kovacs
function popuponclick(param1) // a param1 a kép URL-je { var param=param1; var newImg = document.createElement('img'); newImg.setAttribute('id', 'kep'); newImg.setAttribute('src',param ); if (!document.getElementById('kep')) document.body.appendChild(newImg) ; else { var element = document.getElementById("kep"); element.parentNode.removeChild(element); document.body.appendChild(newImg) ; } var kep_width=document.getElementById("kep").width ; var kep_height=document.getElementById("kep").height ;
Megint elakadtam. Kérdés:lehet e egyáltalán javascript-ben lekérdezni egy,még be nem töltött kép méreteit?
Igy próbálkoztam: (részlet)
function popuponclick(param1) // a param1 a kép URL-je { var param=param1; var newImg = document.createElement('img'); newImg.setAttribute('id', 'kep'); newImg.setAttribute('src',param ); alert(param); alert(newImg.id); alert(newImg.src) ; var kep_width=document.getElementById('kep').width ;
Sajnos az utolsó sorra nyelvet öltött, s ezt üzente: "document.getElementById(...) is null"
ujra kell mond a $('#sortable') -n, hogy .sortable(...) Amugy pedig, ha egy select-ort tobbszor is hasznalsz, akkor mindenkepp rakd ki 1 valtozoba, vagy hivd lancolva, aho lehet, tehat ne kelljen tobbszor megkeresnie a dom-ban. var sortTable = $('#sortable');sortTable .append(...)..., hasonloan az info -ra, bar ebben az esetben tudod lancoltan hivni az egeszet.