HTMLinfinito ciclo for che non è attento alla condizione di array-lunghezza esempio
<html>
<img src="http://img3.wikia.nocookie.net/__cb20130606164012/animalcrossing/images/3/30/Monkey.jpg" width="200px"><br />
<img src="http://i.telegraph.co.uk/multimedia/archive/02101/monkeys_2101340c.jpg" width="200px"><br />
<img src="http://www.awallpapersonline.com/wp-content/uploads/2014/03/Baby-monkeys-pictures-5-419x400.jpg" width="200px"><br />
<p id="sliderImages"><p>
</html>
E il mio JavaScript sembra
var monkey = document.getElementsByTagName("img");
var paragraph = document.getElementById('thisPar');
paragraph.innerHTML += '<img src="' + monkey[0].src +'" width="200">';
che funziona perfettamente bene.
Tuttavia quando l'ho messo in un ciclo che sembra
var monkey = document.getElementsByTagName("img");
var paragraph = document.getElementById('thisPar');
for(var i = 0; i < monkey.length; i++){
paragraph.innerHTML += '<img src="' + monkey[i].src +'" width="200">';
}
Esso stampa un ciclo infinito di tutte le mie foto scimmia. Immagino che facendo dipendere la condizione dal numero di elementi nell'array "monkey" (o dal numero di tag img sulla pagina), sarei in grado di stampare quella quantità di immagini nel paragrafo "thisPar" id.
Perché questa dichiarazione crea un ciclo infinito?
Ogni volta che si aggiunge un elemento con 'innerHTML', la lunghezza di 'monkey.length' aumenta ... quindi continua all'infinito. Come suggerito da ** Notulysses ** crea una variabile fissa per la lunghezza che non verrà modificata con l'aggiunta a 'innerHTML'. Un altro modo per scriverlo è 'for (var i = 0, len = monkey.length; i
erosman