Buongiorno ragazzi, premetto che mi sto avvicinando al javascript da pochissimo, mi sto imbattendo in un problema che pur essendo relativamente semplice non riesco a trovare una soluzione.
Vi mostro il codice:
codice:<script type="text/javascript"> var nzone = localStorage.getItem("nzone"); var nrighe = localStorage.getItem("nrighe"); </script>codice:<script id="html" language="text"> <a href="porte.html" class="portfolio-wide-item"> <h1 id="zonetta"></h1> <p><span class="text-highlight highlight-dark">Temp. 23.05 C°</span><span class="text-highlight highlight-turqoise">Nessun allarme attivo</span></p> <div class="overlay"></div> <img class="responsive-image" src="images/pictures/1ww.jpg" alt="img"> </a> </script>Questo script è orientato a riempire il div <div id="spazio"></div> con il contenuto di <script id="html" language="text">, dove all'interno devo inserire delle variabili, esempio <h1 id="zonetta"></h1> corrisponde al nome della zona.codice:<script type="text/javascript"> for (i=1; i<nrighe+1; i++) { var rigax = localStorage.getItem("riga"+i); var postzona = rigax.search("zona_"); var nomzona = rigax.substr(postzona+7,postzona+9); //recupero il nome della zona var postaglio = rigax.search("kk"); var str = rigax.substr(postaglio + 2); var postaglio2 = str.search("kk"); var zona_nome = str.substr (0, postaglio2); if (nomzona != nomoldzona){ var nzonen = nzonen+1; var nomoldzona = nomzona; //visualizzo zona in html var div = document.createElement('div'); div.innerHTML = document.getElementById('html').innerHTML; document.getElementById('spazio').appendChild(div); document.getElementById('zonetta').innerHTML=zona_nome; }} </script>
Per quanto riguarda il ciclo for non ci sono problemi, mi riporta correttamente il numero delle righe (in questo caso 46 e le cicla correttamente. Infatti crendo un window.alert (zona_nome); ottengo giustamente tutti i nomi delle zone, ma doppioni, poichè ogni zona ha tot porte e quindi la stringa che vado a cercare avrà lo stesso nome zona quante sono le porte di quella zona. Con il ciclo if vado ad estrarre i nomi delle zone una volta soltanto, quindi in questo caso ottengo 10 nome zona univoci. Fino a questo punto è tutto perfetto, infatti inserendo all'interno del ciclo if window.alert(zona_nome); ottengo giustamente 10 zone che sono i nomi delle zone non più ripetuti.
Poi vado ad aggiungerecosì ottengo che il contenuto di:codice:var div = document.createElement('div'); div.innerHTML = document.getElementById('html').innerHTML; document.getElementById('spazio').appendChild(div);
sia ripetuto n volte quante sono le zone, in questo caso 10. Anche in questo caso tutto perfetto.codice:<script id="html" language="text"> <a href="porte.html" class="portfolio-wide-item"> <h1 id="zonetta"></h1> <p><span class="text-highlight highlight-dark">Temp. 23.05 C°</span><span class="text-highlight highlight-turqoise">Nessun allarme attivo</span></p> <div class="overlay"></div> <img class="responsive-image" src="images/pictures/1ww.jpg" alt="img"> </a> </script>
Adesso giungiamo al mio problema, nel momento in cui vado ad inserire:
che dovrebbe inserire nel tag <h1 id="zonetta"></h1> il nome della zona, succede che alla prima zona mette il nome dell'ultima, mentre nelle altre 9 non mostra assolutamente nulla.codice:document.getElementById('zonetta').innerHTML=zona_nome;
Spero di essere stato chiaro, potete aiutarmi?
Grazie in anticipo![]()

Rispondi quotando

