Autor | Zpráva | ||
---|---|---|---|
Akali Profil |
#1 · Zasláno: 2. 7. 2010, 15:22:41
Ahoj, mám takovýto JS
<script type="text/javascript"> var images = [ { "src":"images/prave_menu/vb-jamne.jpg", "width":122, "height":92 },{ "src":"images/prave_menu/kabiny.jpg", "width":122, "height":92 }, { "src":"images/prave_menu/hriste.jpg", "width":122, "height":92 } ]; function gid(id){ return document.getElementById(id); } var index = 0; function loadImage(targetId){ // zjistime kolik je k dispozici obrazku var imagesCount = images.length; // vybereme nahodne index jednoho obrazku index = Math.floor(Math.random() * imagesCount); // do DIVu vlozime obrazek gid(targetId).innerHTML = '<a href="' + images[index].link + '"><img src="' + images[index].src + '" width="' + images[index].width + '" height="' + images[index].height + '" /></a>'; } </script> a tento HTML <div class="center-area"> <div id="loadContainer"></div> <button type="button" value="další" onclick="loadImage('loadContainer');">další</button> <p> </p> </div> Jenže potřebuji, aby tento kód zobrazoval 3 obrázky pod sebou a ne jenom jeden.. Popřípadě, znáte lepší řešení pomocí JS? ->Omlouvám se, ale nevím jak se zvýrazňují kódy |
||
Webb Profil * |
#2 · Zasláno: 2. 7. 2010, 17:35:13
počkat, trošku jsem to nepochopil.. chceš náhodný obrázek ze 3 nebo všecky 3 zobrazit? trošku divné ne? Asi jsem tě nepochopil.
|
||
Webb Profil * |
#3 · Zasláno: 2. 7. 2010, 17:38:54
Webb:
pokut chces zobrazit všechny 3 tak použi cyklus for(var i=1; i<=imagesCount; i++) { gid(targetId).innerHTML = '<a href="' + images[i].link + '"><img src="' + images[i].src + '" width="' + images[index].width + '" height="' + images[i].height + '" /></a>'; } ale potom nechapu proč chceš náhodné? |
||
Akali Profil |
#4 · Zasláno: 2. 7. 2010, 19:05:27
Potřebuji totiž 3 náhodné třeba ze 40.. ale ty ostatní tam přidám časem (napsal jsem jenom jak by to mělo vypadat)
JS vůbec neumím, myslel si to takto? <script type="text/javascript"> var images = [ { "src":"images/prave_menu/vb-jamne.jpg", "width":122, "height":92 },{ "src":"images/prave_menu/kabiny.jpg", "width":122, "height":92 }, { "src":"images/prave_menu/hriste.jpg", "width":122, "height":92 } ]; function gid(id){ return document.getElementById(id); } var index = 0; function loadImage(targetId){ // zjistime kolik je k dispozici obrazku var imagesCount = images.length; // vybereme nahodne index jednoho obrazku index = Math.floor(Math.random() * imagesCount); // do DIVu vlozime obrazek for(var i=1; i<=imagesCount; i++) { gid(targetId).innerHTML = '<a href="' + images[i].link + '"><img src="' + images[i].src + '" width="' + images[index].width + '" height="' + images[i].height + '" /></a>'; } } </script> Popřípadě, mohl by si přidat celý kód? : ) děkuji |
||
Webb Profil * |
#5 · Zasláno: 3. 7. 2010, 00:06:24
Akali:
pokut chceš vždycky tři tak for(var i=1; i<=3; i++) { gid(targetId).innerHTML = '<a href="' + images[index].link + '"><img src="' + images[index].src + '" width="' + images[index].width + '" height="' + images[i].height + '" /></a>'; } ale muze se stat ze se nahodne vyberou stejne |
||
Webb Profil * |
#6 · Zasláno: 3. 7. 2010, 00:07:29
za to "i" v images[i], dej taky index.
|
||
Akali Profil |
#7 · Zasláno: 3. 7. 2010, 08:57:04
Bohužel, takto se zobrazuje taky jenom jeden obrázek :(
<script type="text/javascript"> var images = [ { "src":"images/prave_menu/vb-jamne.jpg", "width":122, "height":92 },{ "src":"images/prave_menu/kabiny.jpg", "width":122, "height":92 }, { "src":"images/prave_menu/hriste.jpg", "width":122, "height":92 } ]; function gid(id){ return document.getElementById(id); } var index = 0; function loadImage(targetId){ // zjistime kolik je k dispozici obrazku var imagesCount = images.length; // vybereme nahodne index jednoho obrazku index = Math.floor(Math.random() * imagesCount); // do DIVu vlozime obrazek for(var i=1; i<=3; i++) { gid(targetId).innerHTML = '<a href="' + images[index].link + '"><img src="' + images[index].src + '" width="' + images[index].width + '" height="' + images[index].height + '" /></a>'; } } </script> |
||
Nox Profil |
#8 · Zasláno: 3. 7. 2010, 09:20:07 · Upravil/a: Nox
Akali:
1) Když v cílovým ID 3x nastavíš img, tak je jasné, že bude jen jedno. Takže před cyklem vymazat a potom += ...nebo jen měnit href/src 2) Funkce se jmenuje loadImage, což by značilo 1 obrázek, měj buď loadImages, nebo asi líp - dej cyklus ven 3) V cyklu nepoužíváš imagesCount...tvorba téhle proměnné je stejně zbytečná, použiješ to jen jednou, navíc .length je vlastnost, ne funkce co by něco počítala, takže rychlé to bude stejně |
||
Webb Profil * |
#9 · Zasláno: 3. 7. 2010, 10:48:44
Nox:
jo tojsem přehledl, tak si udělej třeba tři div <div id="image_1"></div> <div id="image_2"></div> <div id="image_3"></div> gid(targetId+"_"+i).innerHTML = '<a href="' + images[index].link + '"><img src="' + images[index].src + '" width="' + images[index].width + '" height="' + images[index].height + '" /></a>'; nebo použí to += ale před každým novým cyklem bys musel element promazat aby se ti tam nepřidavaly další. |
||
Akali Profil |
#10 · Zasláno: 3. 7. 2010, 11:01:04 · Upravil/a: Akali
Takže jak by to vypadalo celé dohromady? S JavaScriptem nejsem kamarád :(
Nějak bych to zkoušel, ale zrovna nejsem u svých dat. Nox: Jsem rád, že mi tady takto radíte, ale asi nemá smysl mi do hlavy cát takovýhle odborný myšlenky. Jak jsem už několikrát napsal, JavaScript vidím 2x za století a nejsem schopnej si kód podle svého poupravovat jako například v php a podobných jazycích, bohužel : ( |
||
Webb Profil * |
#11 · Zasláno: 3. 7. 2010, 11:46:58
<script type="text/javascript"> var images = [ { "src":"images/prave_menu/vb-jamne.jpg", "width":122, "height":92 },{ "src":"images/prave_menu/kabiny.jpg", "width":122, "height":92 }, { "src":"images/prave_menu/hriste.jpg", "width":122, "height":92 } ]; function gid(id){ return document.getElementById(id); } var index = 0; function loadImage(targetId){ // zjistime kolik je k dispozici obrazku var imagesCount = images.length; // vybereme nahodne index jednoho obrazku index = Math.floor(Math.random() * imagesCount); // do DIVu vlozime obrazek for(var i=1; i<=3; i++) { gid(image+"_"+i).innerHTML = '<a href="' + images[index].link + '"><img src="' + images[index].src + '" width="' + images[index].width + '" height="' + images[index].height + '" /></a>'; } } </script> a toto vložiš do stránky <div id="image_1"></div> <div id="image_2"></div> <div id="image_3"></div> pokut tu neni nekde jeste chyba tak by to melo jit |
||
Nox Profil |
#12 · Zasláno: 3. 7. 2010, 11:50:11
Webb:
proměnná index se musí naplňovat uvnitř cyklu, jinak se bude používat furt stejná hodnota |
||
Akali Profil |
#13 · Zasláno: 3. 7. 2010, 13:42:54
Nevím proč, ale tento kód (JS + html) - přesně tak, jak si ho napsal, mi nějak nefunguje..
|
||
Akali Profil |
#14 · Zasláno: 3. 7. 2010, 15:53:48
Tak už jsem to vyřešil jinak, děkuji pánové ;)
|
||
Akali Profil |
#15 · Zasláno: 3. 7. 2010, 18:44:01
Tak jsem to teda nakonec nevyřešil, při nahrání na ic.cz se mi nezobrazují 3 obrázky, ale někdy 2, někdy jeden a někdy dokonce žádný :(
kód <script type="text/javascript"> var obrazky = new Array("../images/prave_menu/vb-jamne.jpg", ".../images/prave_menu/hriste.jpg", ".../images/prave_menu/kabiny.jpg"); document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>"); document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>"); document.write("<img src='"+obrazky[Math.round(Math.random()*(obrazky.length-1))]+"'>"); </script> Máte nějaké řešení? :( Už jsem jaksi zoufalej |
||
Chamurappi Profil |
#16 · Zasláno: 3. 7. 2010, 20:37:45
Reaguji na Akaliho:
„při nahrání na ic.cz se mi nezobrazují 3 obrázky, ale někdy 2, někdy jeden“ To vypadá na špatnou cestu k některému z obrázků. Máš správně velikost písmen? Co si slibuješ od těch tří teček? Mimochodem, zamysli se nad svými výpočty s náhodným číslem. Metoda Math.random() ti vrátí číslo od nuly do jedné, ty ho vynásobíš dvěma, vznikne číslo od nuly do dvou, to zaokrouhlíš na celé číslo — takže z rozsahu 0 až 0.5 vzejde 0, z 0.5 až 1.5 vzejde 1 a z 1.5 až 2 vzejde 2. S padesátiprocentní pravděpodobností vybereš prostřední obrázek, což asi není záměr, ne?
|
||
Časová prodleva: 14 let
|
0