document.getElementById("xxxxx").innerHTML iterato con un for

cavaliere123

Utente Attivo
31 Lug 2012
416
0
16
Buongiorno :)

Ho creato uno script che dovrebbe prendere degli array da un file esterno js e li deve ordinare e poi incollare in una tabella usando gli elementi DOM.

il file esterno : stemmo.js, si presenta cosi

HTML:
var citta = new Array();

citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";
citta[3] = "Brescia";
citta[4] = "Zurigo";
citta[5] = "Berlino";
citta[6] = "Roma";
citta[7] = "Bologna";
citta[8] = "Trieste";
citta[9] = "Firenze";


var nominativi = new Array();

nominativi[0] = "Paolo Milano";
nominativi[1] = "Gianni Napoli";
nominativi[2] = "Claudio Venezia";
nominativi[3] = "Fulvio Brescia";
nominativi[4] = "Giuseppe Zurigo";
nominativi[5] = "Mario Berlino";
nominativi[6] = "Mario Roma";
nominativi[7] = "Claudio Bologna";
nominativi[8] = "Massimo Trieste";
nominativi[9] = "Maurizio Firenze";


var titoli = new Array();

titoli[0] = "Paolo";
titoli[1] = "Gianni";
titoli[2] = "Claudio";
titoli[3] = "Fulvio";
titoli[4] = "Giuseppeo";
titoli[5] = "Mario";
titoli[6] = "Mario ";
titoli[7] = "Claudioa";
titoli[8] = "Massimo ";
titoli[9] = "Maurizio";

e lo script cosi :

HTML:
<html>
<head>

<script type="text/javascript" src="stemmo.js"></script>

<script type="text/javascript">



function scrivi() {
var identico = titoli.slice(0);
var primoc = nominativi.slice(0);
var secondoc = citta.slice();

primoc.sort();

for (var i = 0; i<primoc.length; i++){
for (var j=0; j<nominativi.length; j++) {
if (nominativi[j]==primoc[i]){
citta[i] = secondoc[j];
titoli[i] = identico[j]

var nomesc = 'citta['+i+']="'+citta[i]+'"';
var desces = 'titoli['+i+']="'+titoli[i]+'"';

document.getElementById("nomesco").innerHTML= nomesc;

document.getElementById("desceso").innerHTML= desces;

break;
} } };



for (var i=0; i<primoc.length; i++) {

var imegst = 'primoc['+i+']="'+primoc[i]+'"'"
document.getElementById("imegsto").innerHTML= imegst;
nominativi[i]= primoc[i] ;
}   }

 scrivi();

</script>

</head>

<body>

<div>

<table style="text-align: left; width: 100%;" border="1"
 cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td>var nome = new Array()</td>
    </tr>
    <tr>
      <td id="nomesco"></td>
    </tr>
    <tr>
      <td style="height: 43px;"></td>
    </tr>
    <tr>
      <td style="height: 17px;">var descrstem = new Array()</td>
    </tr>
    <tr>
      <td id="desceso"></td>
    </tr>
    <tr>
      <td style="height: 45px;"></td>
    </tr>
    <tr>
      <td style="height: 16px;">var immagste = new Array()</td>
    </tr>
    <tr>
      <td id="imegsto"></td>
    </tr>
  </tbody>
</table>

     <script type="text/javascript">scrivi();</script>

</div>

</body>
</html>

Potete sempre per favore dargli uno sguardo.... me sa che l'elemento DOM è settato male... :(
Grazie come sempre. Domenico.
 
Chiaramente per maggior precisione desidero che nel <td> venga stampato tutto il valore di quell'array che è stato ordinato.
 
Buongiorno :)

Ho creato uno script che dovrebbe prendere degli array da un file esterno js e li deve ordinare e poi incollare in una tabella usando gli elementi DOM.

Potete sempre per favore dargli uno sguardo.... me sa che l'elemento DOM è settato male... :(
Grazie come sempre. Domenico.


Prima di darti lo script sistemato.

1) c'è un errore nel js un " di troppo
2) richiami due volue la funzione scrivi();
3) impara l'utilizzo degli operatori: < <= > >= + . ++i i++ += "testo"+i ecc....
3) il js deve stare sotto la tabella per valorizzare i nomi dati per gli identificatori (ID)
4) non utilizzare new per istanziare gli Array ma solo []

Valelria.
 
Salve Valeria, ho fatto tutte le correzioni che mi hai suggerito gentilmente come sempre :)
E in più leggendo ancora una volta gli operatori ho notato quello : += , che messo prima della variabile riferita al document..... fa in modo che sommi i valori uno appresso all'altro e tratandosi di stringhe in effetti li concatena :)
Vedesi : https://www.mrw.it/javascript/guide/operatori_22.html

e poi aggiunto nella definizione della variabile anche il codice : <br>, in modo da dividere la stringa completa come fosse in colonna :)
Spero di essere stato chiaro.

posto il tutto per chiarezza anche di altri che leggeranno :

file js esterno :

HTML:
var citta = [];

citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";
citta[3] = "Brescia";
citta[4] = "Zurigo";
citta[5] = "Berlino";
citta[6] = "Roma";
citta[7] = "Bologna";
citta[8] = "Trieste";
citta[9] = "Firenze";


var nominativi = [];

nominativi[0] = "Paolo Milano";
nominativi[1] = "Gianni Napoli";
nominativi[2] = "Claudio Venezia";
nominativi[3] = "Fulvio Brescia";
nominativi[4] = "Giuseppe Zurigo";
nominativi[5] = "Mario Berlino";
nominativi[6] = "Mario Roma";
nominativi[7] = "Claudio Bologna";
nominativi[8] = "Massimo Trieste";
nominativi[9] = "Maurizio Firenze";


var titoli = [];

titoli[0] = "Paolo";
titoli[1] = "Gianni";
titoli[2] = "Claudio";
titoli[3] = "Fulvio";
titoli[4] = "Giuseppeo";
titoli[5] = "Mario";
titoli[6] = "Mario ";
titoli[7] = "Claudioa";
titoli[8] = "Massimo ";
titoli[9] = "Maurizio";

Scritp js con html :

HTML:
<html>
<head>

<script type="text/javascript">

function scrivi() {
var identico = titoli.slice(0);
var primoc = nominativi.slice(0);
var secondoc = citta.slice();

primoc.sort();

for (var i = 0; i<primoc.length; i++){
for (var j=0; j<nominativi.length; j++) {
if (nominativi[j]==primoc[i]){
citta[i] = secondoc[j];
titoli[i] = identico[j]

var nomesc = 'citta['+i+']="'+citta[i]+'";'+ "<br>";
var desces = 'titoli['+i+']="'+titoli[i]+'";'+ "<br>";

document.getElementById("nomesco").innerHTML+= nomesc;

document.getElementById("desceso").innerHTML+= desces;

break;
} } };



for (var i=0; i<primoc.length; i++) {

var imegst = 'nominativi['+i+']="'+primoc[i]+'";'+ "<br>";
document.getElementById("imegsto").innerHTML+= imegst;
nominativi[i]= primoc[i];
}   }



</script>

</head>

<body>

<div>

<table style="text-align: left; width: 100%;" border="1"
 cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td>var citta = []</td>
    </tr>
    <tr>
      <td id="nomesco"></td>
    </tr>
    <tr>
      <td style="height: 43px;"></td>
    </tr>
    <tr>
      <td>var titoli = []</td>
    </tr>
    <tr>
      <td id="desceso"></td>
    </tr>
    <tr>
      <td style="height: 45px;"></td>
    </tr>
    <tr>
      <td>var nominativi = []</td>
    </tr>
    <tr>
      <td id="imegsto"></td>
    </tr>
  </tbody>
</table>
<script type="text/javascript" src="stemmo.js"></script>
     <script type="text/javascript">scrivi();</script>

</div>

</body>
</html>

E devo dirti che è davvero piacevole anche se logicamente dietro tuo diretto suggerimento alla fine aggiustarsi i propri errori . Certo di sicuro ne troverai altri... ma dammi tempo per cortesia. :)
Ed anche di questo te ne ringrazio . Ottima mentore... complimenti.

Domenico.
 
Ciao,

oppure


Codice:
document.getElementById("nomesco").innerHTML+= nomesc +="<br>";

Valeria.
 
Perfetto.... la tua correzione stavolta la definisco " tocco di classe finale "....
E che chiaramente andrò ad usare :)
Merci.
 
Ciao,

nel tuo esempio hai il <br> nella variabile aggiunto con il segno + continuazione di stringa

Codice:
var nomesc = 'citta['+i+']="'+citta[i]+'";'+ "<br>";

è sbagliato il ; non ci deve stare son l'opretatore + errore che fai spesso anche in html (è tutt'altra cosa)


Codice:
var nomesc = 'citta['+i+']="'+citta[i]+'"'+ "<br>";

Valeria
 
D'accordo ma pensavo che stando in mezzo alle due ' ' lo prendesse solo come carattere e non come nessun tipo di codice o altro... e messo perché cosi quando li stampo a video o con Activex su file di testo mi esce direttamente :* citta[x]= "valore"; * e quindi non costretto a mettere in seconda battuta tutti i punti e virgola vicino a tutti gli elementi dell'array...
 
Finisco devo uscire

il segno + si usa per concatenare più caratteri di tipo String o variabili.

Quindi è buona regola separarli.

document.getElementById("nomesco").innerHTML+= nomesc +=";"+"<br>";

o


var nomesc = 'citta['+i+']="'+citta+'"'+";"+"<br>";


Vale.
 

Discussioni simili