Problema ciclo for

di il
4 risposte

Problema ciclo for

CIao. Dopo aver esagerato nel fare cose al di fuori della mia portata sono ritornato alle basi del linguaggio. Quindi ho una paginetta con una serie di textbox che si devono riempire tramite un pulsante “recupera”. Premetto che precedentemente ho inserito in un'altra pagina i dati che intendo recuperare(ho usato il localStorage). Premendo il fatidico pulsante “recupera" effettivamente recupero i dati che sto cercando. E' sempre lo stesso esercizio su cui sto lavorando.

1 inserisco i dati sottoforma di oggetti in un array( dbGuardia)

2 Attraverso un ciclo for ciclo tra tutti i dati presenti nell'array

3 Se trovo il cognome che sto cercando, riempio le textbox della pagina in questione, se non lo trovo mi stampa a video "Nominativo non trovato.

Problema:

A video mi stampa sempre “Nominativo non trovato” anche se trova il cognome e quindi il record cercato. E questo lo capisco.

function recupera() {

  let cogn = document.getElementById('idx').value;
  let dbGuardia = JSON.parse(localStorage.getItem('guardie'));

  for (let i = 0; i < dbGuardia.length; i++) {
    if (cogn == dbGuardia[i].cognome) {
      document.getElementById('modNom').value = dbGuardia[i].nome;
      document.getElementById('modCogn').value = dbGuardia[i].cognome;
      document.getElementById('modInd').value = dbGuardia[i].indirizzo;
      document.getElementById('modTel').value = dbGuardia[i].telefono;

    }else if(cogn !==dbGuardia[i].cognome){
        
        document.getElementById('mod').innerHTML="Nominativo non trovato";
      }
      
    }

  }

La domanda è: come faccio a uscire dal ciclo quando trova il cognome cercato? Ho provato senza successo con break ma ovviamente interrompe il ciclo e se il record si trova nella 2 o 3 posizione non lo legge.

Questo è illink della pagina:

https://codepen.io/tonyven/pen/XWPXzqy

4 Risposte

  • Re: Problema ciclo for

    Il break va nella if

    La else e seconda if non devi metterla 

    Fuori dalla for il messaggio di non trovato

  • Re: Problema ciclo for

    Ciao. Purtroppo continua a non funzionare. E' come se non vedesse proprio il break. Ho paura di avere qualche virus o qualche altra stramaledetta cosa.

    function recupera() {
    
      let cogn = document.getElementById('idx').value;
      let dbGuardia = JSON.parse(localStorage.getItem('guardie'));
    
      for (let i = 0; i < dbGuardia.length; i++) {
        if (cogn == dbGuardia[i].cognome) {
          document.getElementById('modNom').value = dbGuardia[i].nome;
          document.getElementById('modCogn').value = dbGuardia[i].cognome;
          document.getElementById('modInd').value = dbGuardia[i].indirizzo;
          document.getElementById('modTel').value = dbGuardia[i].telefono;
          break;
        }
        
      }
     document.getElementById('mod').innerHTML="Nominativo non trovato";
     
    }
  • Re: Problema ciclo for

    Ma no… 

    Imposta all'inizio una variabile a false.

    Prima del break imposta tale variabile a true.

    La riga fuori dal ciclo la esegui sotto una if che controlla che tale variabile sia falsa

  • Re: Problema ciclo for

    Ciao.Perfetto ora funziona alla grande!! Grazie della dritta.

Devi accedere o registrarti per scrivere nel forum
4 risposte