Diskuze: Slider pomocí změny obrázku
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Nechápen ako ti to môže fungovať.
document.getElementById("sliderImg").src = "imgs/img_" + current +"";
N akonci musí byť: +".jpg" a nie len "".
Proboha, no jó.. Toho sem si vůbec nevšiml. Teď už to běhá. takže ještě pár věcí
Co ty přechody?
Jo a když mám obrázky a vím názvy, ale nevím přesně jejich přípony souborů tak jak zjistit jestli soubor existuje nebo ne? Například něco jako toto, ale to nefunguje
if(ImageExist("imgs/img_" + current +".jpg"))
document.getElementById("sliderImg").src = "imgs/img_" + current +".jpg";
else if(ImageExist("imgs/img_" + current +".png"))
document.getElementById("sliderImg").src = "imgs/img_" + current +".png";
else(ImageExist("imgs/img_" + current +".jpeg"))
document.getElementById("sliderImg").src = "imgs/img_" + current +".jpeg";
function ImageExist(url)
{
var img = new Image();
img.src = url;
return img.height != 0;
}
Na slider pouzivam len jeden typ obrazkov.
Používám podobný js, proto si dovolím otázku. Nešlo by nějak udělat, aby script automaticky začal prvním obrázkem po dosažení posledního? Tedy, aby nebylo třeba zadávat pomocí var max = x; faktický počet obrázků ve složce?
Napr. Obrazky nazves 1.jpg, 2.jpg......... n.jpg a pouzijes podmienku na vratenie k 1.jpg.
Například by šlo ty obrázky dát do pole a z něho to brát s tím že by sis spočítal velikost, ale nevím jak to dát do toho pole automaticky
Teď budu za vola.
Zkoušel jsem si napřed obrázky sečíst, získat tím nějakou hodnotu a tu
použít. Ale mám sotva základ javy a v javascriptu mi tohle nefunguje:
var current =1;
File f = new File("images/img_" + current + ".jpg");
var pocetObrazku=0;
var a=0;
function testovaniPoctu()
{
while(a==0)
{
if(f.exists==true)
{
pocetObrazku++;
current++;
}
else
{
a++;
current=1;
}
}
}
function slideIT()
{
if(current > pocetObrazku)
current = 1;
document.getElementById("sliderImg").src = "images/img_" + current +".jpg";
}
Cílem je, aby obrázky ve složce mohl vyměnit každý měsíc kdokoliv, i neznalý člověk, za jiné, v jiném počtu a nebylo přitom potřeba upravovat v .html souboru hodnotu var max =
Jo nějak tak by to bylo fajn akorát neznalý člověk by do složky nedával určitě jen** .jpg** soubory což by to naprosto robilo. Jinak je to celkem použitelný po pár úpravách jelikož si říkal že to nefunguje.
Problém je, že načítání obrázků je asynchronní, takže pokud budeš chtít měnit obrázky, tak jedině až po tom, co se načtou nebo nenačtou.
Takže řešení může být takhle:
function imageExist(url, callback) {
var img = new Image();
img.onerror = callback;
img.src = url;
}
imageExist(document.querySelector("#nefunkcni").getAttribute("src"), function() {document.querySelector("#nefunkcni").setAttribute("src", "http://www.itnetwork.cz/images/4ebaba1cda831_image_0_thumb.png")});
Rád si vždycky trochu pogooglím, abych viděl řešení ostatních. Tak
tady jsou ještě dvě možnosti.
Jedno takové hezké minimalistické:
<img src="imagenotfound.gif" alt="Image not found" onerror="this.onerror=null;this.src='imagefound.gif';" />
this.onerror=null; je tam jen kvůli tomu, kdyby i nový odkaz byl rozbitý, aby se to nezkoušelo načítat znovu a znovu.
Pak je skvělé toto, které prostě vrací true nebo false, ale jedná se o řešení, kde musejí být obrázky na stejné doméně.
function imageExists(image_url){
var http = new XMLHttpRequest();
http.open('HEAD', image_url, false);
http.send();
return http.status != 404;
}
Zobrazeno 10 zpráv z 10.