Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214

    azzerare successivamente elementi scelti di un array

    In questo codice, scritto un array1() di numeri casuali tra 1 e 100, si scrive il suo primo elemento (o anche un altro qualunque), vengono trovati tutti gli altri elementi dell'array uguali ad esso, vengono azzerati e mostrati azzerati in una casella di testo, infine si riscrive l'array1() con gli elementi trovati azzerati.
    Il codice funziona con la scelta del primo elemento, ma non con la scelta dei successivi elementi che vengono mostrati azzerati nella casella di testo, ma quando si riscrive l'array1() questi elementi figurano non azzerati, pur essendo stati azzerati e figurando azzerati.
    Non mi spiego il motivo. Grazie per l'aiuto.


    lanvoel



    codice HTML:
    <B>azzerare elementi a scelta di un array1() di numeri casuali</B><br><br>
    <input type="button" id=="bottone1" value="scrivi l'array1()" onclick="scrivi()">
    <br>array1()
    <input type="text"  size=550 id="lista1"><br>scrivi un elemento dell'array1()
    <input type="text" id="numero"><br>
    <input type="button" id="bottone2" value="riscrivi l'array1() con gli elementi scelti azzerati" onclick="riscrivi()">
    <br>elementi dell'array1() trovati<input type="text" size=200 id="prova">
    <br>nuovo array1()<input type="text"  size=550 id="lista2"><br>




    codice:
    var array1 = new Array();
    
    function scrivi() {
        for (var i = 1; i <= 100; i++) {
            array1[i] = Math.floor(Math.random() * 100) + 1
            lista1.value = lista1.value + i + ")" + array1[i] + " "
        }
    }
    
    
    
    
    function riscrivi() {
        var numero1 = document.getElementById("numero").value;
        for (var j = 1; j <= 100; j++) {
            if (array1[j] == numero1) {
                array1[j] = 0;
                document.getElementById("prova").value = document.getElementById("prova").value + "array1(" + j + ") ora vale " + array1[j] + ", ";
            }
            lista2.value = lista2.value + j + ")" + array1[j] + " ";
        }
    }
    </script>
    Ultima modifica di ciro78; 17-09-2020 a 21:52

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    ho formattato un po' il codice ...si vedeva malissimo..e non si formatta come dovrebbe. per le prossime volte cerca di postare codice più leggibile. le persone se debbono interpretare il codice , passano oltre.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Ciao, nell’elemento numero cosa viene scritto che valore dovrebbe avere? Dove è l’elemento prova?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    Il problema consiste nello scrivere un array1() di 100 numeri casuali e poi, scegliendo successivamente i suoi elementi, ponendoli nella variabile numero1, riscrivere successivamente l'array1() con questi elementi azzerati.
    Ho aggiunto una casella Id="prova" per controllare gli elementi dell'array1() azzerati.
    Nella casella id="lista2" riscrivo l'array1() con gli elementi successivamente azzerati, ma figura azzerato solo l'elemento scelto per primo, mentre gli altri, scelti dopo di esso, pur figurando azzerati nella casella id="prova", non figurano azzerati nella casella id="lista2".
    L'esercizio è semplice, ma un po' complicato da dire, e chiedo scusa se il codice è poco leggibile

    lanvoel

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    Leggo la domanda di Cavicchiandrea solo dopo aver inviato il mio ultimo intervento.
    Nella casella di testo id="numero" scrivo la variabile numero1, uguale successivamente agli elementi dell'array1(), a partire dal primo. Quando un elemento dell'array1(), oltre evidentemente il primo, è uguale a numero1 esso viene posto uguale a 0.
    Il primo elemento viene azzerato (e anche gli altri uguali ad esso) e lo si vede sia nella casella id="prova" e nella casella id="lista2" dove viene riscritto tutto l'array1().
    Invece quando numero1 è uguale al secondo o a tutti gli altri elementi dell'array1(), questi elementi figurano azzerati nella casella id="prova", ma non nella casella id="lista2" dove viene riscritto tutto l'array1(). E non mi spiego perchè.

    lanvoel

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Non ci ho capito molto nella tua spiegazione. Se l’array non viene cancellato è perché if non risulta true inserisci degli alert coi valori che vuoi confrontare è un else.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    codice:
    function riscrivi() {
        var numero1 = document.getElementById("numero").value;
        for (var j = 1; j <= 100; j++) {
            if (array1[j] == numero1) {
                array1[j] = 0;
                document.getElementById("prova").value = document.getElementById("prova").value + "array1(" + j + ") ora vale " + array1[j] + ", ";
            }
            lista2.value = lista2.value + j + ")" + array1[j] + " ";
        }
    
    }
    Provo a rispiegarmi:

    Non si deve cancellare l'array1(), ma si devono porre uguale a 0 i suoi elementi se sono uguali al numero1 di cui si fa più volte l'input.
    Al primo input di numero1, gli'elemento dell'array1(j) uguali ad esso vengono posti = a 0, e figurano = a 0 sia nella casella id="prova" che in
    quella id="lista2". La cosa che non quadra è perché al secondo input di numero1 (e anche ai successivi input di numero1) gli elementi
    dell'array1(j) uguali ad esso vengono posti = a 0 e figurano uguali a zero nella casella id="prova", ma non nella casella id="lista2"
    Grazie

    lanvoel

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.