2016-03-30 6 views
1

Ich habe Probleme mit meinem JS-Code und ich hoffe, Sie können mir helfen, mir zu helfen. Alles, was ich tun möchte, ist, 5 Bilder, die in einem Array gespeichert sind, zu wiederholen und im Grunde auf meine HTML-Seite zu stellen.Looping durch Bilder Array und zeigt sie auf HTML-Seite

JS:

function functieArray(){ 
    for (i = 0; i < imgArray.length; i++) { 
     imgArray[i]; 
    } 
    document.getElementById("pozeGallery").innerHTML = imgArray.src; 
}; 

var imgArray = new Array(); 
imgArray[0] = new Image(); 
imgArray[0].src = 'img/Gallery/poza0.jpg'; 

imgArray[1] = new Image(); 
imgArray[1].src = 'img/Gallery/poza1.jpg'; 

imgArray[2] = new Image(); 
imgArray[2].src = 'img/Gallery/poza2.jpg'; 

imgArray[3] = new Image(); 
imgArray[3].src = 'img/Gallery/poza3.jpg'; 

imgArray[4] = new Image(); 
imgArray[4].src = 'img/Gallery/poza4.jpg'; 

HTML:

<button onclick='functieArray()' class='galleryButons'>Category 1</button> 
     <div id='pozeGallery'> </div> 
+0

Sie möchten alle Bilder zum '# pozeGallery' Element rechts hinzufügen? – itzmukeshy7

+0

Ja, ich möchte alle Bilder zu meiner Seite hinzufügen, nachdem ich auf eine Schaltfläche geklickt habe. –

Antwort

1

Sie müssen sie tatsächlich an den DOM anhängen für sie zu zeigen.

die appendChild() Methode

In Ihrem Fall verwenden:

function functieArray() { 
    var gallery = document.getElementById("pozeGallery"); 
    for (i = 0; i < imgArray.length; i++) { 
     gallery.appendChild(imgArray[i]); 
    } 
}; 

Beachten Sie auch, dass Sie in Ihrem Codebeispiel nicht functieArray überall anrufen, so dass es nicht funktionieren könnte.

+0

Alternativ könnten sie 'gallery.innerHTML + = imgArray [i] .outerHTML;' – 4castle

+0

das ist wirklich eine schlechte Praxis, es bedeutet, der Browser muss das DOM jedes Mal neu erstellen, wenn Sie etwas ändern, werfen Sie einen Blick auf: http://stackoverflow.com/questions/2305654/innerhtml-vs-appendchildtxtnode – dcohenb

+0

Ja, in meiner Antwort habe ich alle 'outerHTML' zuerst an eine Zeichenkette angehängt und dann die' innerHTML' auf einmal gesetzt. Eine andere Lösung aus der Antwort, die Sie zitiert haben, ist die Verwendung von 'insertAdjacentHTML'. – 4castle

0

Um den HTML-Code der Image Objekte zu erhalten, verwenden Sie Image#outerHTML. Dann können Sie einfach das Array durchlaufen, indem Sie es zur Galerie innerHTML hinzufügen.

Hier ist, wie Sie Ihren Code beheben sollte (ich für die Erstellung der Image Objekte eine Schleife verwenden, werde):

var imgArray = []; 
 
for (i = 0; i < 5; i++) { 
 
    imgArray[i] = new Image(); 
 
    imgArray[i].src = 'img/Gallery/poza' + i + '.jpg'; 
 
} 
 

 
function functieArray() { 
 
    var images = imgArray.map(img => img.outerHTML).join(''); 
 
    document.getElementById("pozeGallery").innerHTML = images; 
 
}
<button onclick='functieArray()' class='galleryButons'>Category 1</button> 
 
<div id='pozeGallery'></div>

+0

Ich habe meine Antwort aktualisiert, so dass es kein Duplikat der anderen ist. Nun wird das 'innerHTML' auf das 'outerHTML' jedes' Image'-Objekts gesetzt. – 4castle

0

Versuchen Sie dies;)

function functieArray() { 
 
    var gallery = document.getElementById("pozeGallery"); 
 
    for (i = 0; i < imgArray.length; i++) { 
 
     gallery.appendChild(imgArray[i]); 
 
    } 
 
}; 
 
var imgArray = new Array(); 
 
imgArray[0] = new Image(); 
 
imgArray[0].src = 'img/Gallery/poza0.jpg'; 
 

 
imgArray[1] = new Image(); 
 
imgArray[1].src = 'img/Gallery/poza1.jpg'; 
 

 
imgArray[2] = new Image(); 
 
imgArray[2].src = 'img/Gallery/poza2.jpg'; 
 

 
imgArray[3] = new Image(); 
 
imgArray[3].src = 'img/Gallery/poza3.jpg'; 
 

 
imgArray[4] = new Image(); 
 
imgArray[4].src = 'img/Gallery/poza4.jpg';
<button onclick='functieArray()' class='galleryButons'>Category 1</button> 
 
     <div id='pozeGallery'> </div>