Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158

    Problema salvataggio valori in array

    Ciao a tutti!

    Sto provando a fare una cosa del genere:

    - Cambio lo sfondo a un div con id="prova"
    - Salvo il nome del colore in un array
    -successivamente
    - Cambio dinamicamente l'oggetto a cui cambiare lo sfondo
    - Ora cambio il colore al div con id ="prova2"
    -Cerco di salvare il valore del colore nello stesso array precedente, ma su una riga diversa.

    Posto il js
    codice:
    // oggetto a cui modificare lo sfondo
    var oggetto = "#prova"; 
    
    
    // array dove salvare le modifiche apportate agli oggetti
    var home = [];
    home[oggetto] = { bg : '', color: ''};
    
    
    // QUESTA FUNZIONE:
    // applico il colore di sfondo a "oggetto"
    // salvo il valore nell'array
    // mostro con l'alert se ho inserito il valore
    function cambiaLarg(valore){
        
        // faccio vedere nell'anteprima
        $(oggetto).css('background-color', valore);
        
        // salvo nell'array la proprietà CSS
        home[oggetto]['bg'] = "background-color: " + valore;
        
        alert(home[oggetto]['bg']);
        
    } 
    
    
    // QUESTA FUNZIONE:
    // modifico la variabile globale "oggetto"
    // verifico la modifica con l'alert
    function cambiaOggetto(){
        oggetto = "#prova2";
        alert(oggetto);
    }
    
    
    // QUESTA FUNZIONE:
    // stampo il contenuto dell'array che mi interessa
    function stampa(){
        alert(home['#prova']['bg']);
        alert(home['#prova2']['bg']);
    }
    la sequenza dei passaggi è questa:
    1) Scrivo "red" in una textbox che all' onchange fa partire la funzione cambiaLarg(valore) ->FUNZIONA
    2) Clicco su un bottone che all'onclick fa partire la funzione cambiaOggetto() -> FUNZIONA
    3) Nella textbox di prima inerisco "blue" che all' onchange fa partire la funzione cambiaLarg(valore) cambiando correttamente il colore al div #prova2, ma già qui l'alert non appare.
    4) Su un altro bottone clicco per far partire la funzione stampa() che stampa il primo alert, ma il secondo no.

    Sicuramente sto sbagliando nella creazione dell'array. In pratica quello che vorrei fare è creare una matrice che per ogni riga abbia le informazioni sul bg e il color di ogni oggetto.

    tipo cosi:

    #prova -> background-color : red -> color: white
    #prova2 -> background-color : blue -> color: black

    Spero di essermi spiegato correttamente... Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    nessuno?

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Posta tutto il codice (Html incluso).
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    questo è l' HTML

    (racchiudo il codice tra tag ma non lo mostra...)
    codice HTML:
                    
                    Modifica div "#prova2"        Stampa CSS                
                            
    
    questo invece è il file dimension.js che contiene lo script

    codice:
    // oggetto a cui modificare lo sfondo
    var oggetto = "#prova"; 
    
    
    
    
    // array dove salvare le modifiche apportate agli oggetti
    var home = [];
    home[oggetto] = { bg : '', color: ''};
    
    
    
    
    // QUESTA FUNZIONE:
    // applico il colore di sfondo a "oggetto"
    // salvo il valore nell'array
    // mostro con l'alert se ho inserito il valore
    function cambiaLarg(valore){
        
        // faccio vedere nell'anteprima
        $(oggetto).css('background-color', valore);
        
        // salvo nell'array la proprietà CSS
        home[oggetto]['bg'] = "background-color: " + valore;
        
        alert(home[oggetto]['bg']);
        
    } 
    
    
    
    
    // QUESTA FUNZIONE:
    // modifico la variabile globale "oggetto"
    // verifico la modifica con l'alert
    function cambiaOggetto(){
        oggetto = "#prova2";
        alert(oggetto);
    }
    
    
    
    
    // QUESTA FUNZIONE:
    // stampo il contenuto dell'array che mi interessa
    function stampa(){
        alert(home['#prova']['bg']);
        alert(home['#prova2']['bg']);
    }
    Quello che vorrei fare è creare un array esterno alle funzioni e popolarlo come se fosse una tabella di un database quindi come con dei record... ogni record contiene l'id dell'oggetto modificato e i valori delle proprietà modificate

    esempio:

    id - bg - color
    #prova - background-color:red - color:white
    #prova2 - background-color:blue - color:black

    
    Ultima modifica di Alifuma92; 31-01-2015 a 02:13

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il codice delle textbox e degli eventi ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    questo è la textbox dove inerisco il colore
    input type="text" onchange="cambiaLarg(this.value)" id="larg" value="#000"

    questo è il bottone con cui cambio l'oggetto da modificare
    button onclick="cambiaOggetto()">Modifica div "#prova2" /button

    questo è il bottone con cui attivo stampa()
    button onclick="stampa()">Stampa CSS /button

    PS Ho scritto cosi l html perché se lo copio e lo incollo non mostra il codice

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi. Ho fatto in modo di fare funzionare il tuo codice ma secondo me sbagli approccio se devi aggiungere altri criteri.

    codice HTML:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script language="JavaScript" type="text/javascript">
    <!--
    // oggetto a cui modificare lo sfondo
    // var oggetto = "#prova"; 
    var oggetto; 
    // array dove salvare le modifiche apportate agli oggetti
    var home = new Array();
    //home[oggetto] = { bg : '', color: ''};
    function cambiaLarg(valore){         
     if (oggetto != null) {
       $(oggetto).css('background-color', valore);  
       if (home[oggetto] == null) {home[oggetto] = new Array();}
       home[oggetto]['bg'] = "background-color: " + valore;        
       alert(home[oggetto]['bg']);
     } else {
       alert("clicca un bottone 'Modifica ...'");
     }    
    } 
    function cambiaOggetto(myOggetto){
        oggetto = '#'+myOggetto;
      document.getElementById('incorso').innerHTML = 'div '+oggetto+' in corso';
      //alert(oggetto);
    }
    function stampa(){
        if (home['#prova'] == null) {
        alert("#prova non ancora definito");
      } else {
          alert(home['#prova']['bg']);
       }
        if (home['#prova2'] == null) {
        alert("#prova2 non ancora definito");
      } else {
          alert(home['#prova2']['bg']);
       }  
    }
    //-->
    </script>
    </head>
    <body>
     <div id="prova">questo è id prova </div></br>
     <div id="prova2">questo è id prova 2</div></br>
     <hr/> 
     <div id="incorso">nessun div in corso - clicca bottone 'Modifica ...'</div></br>
     <hr/>  
     <input type="text" onchange="cambiaLarg(this.value)" id="larg" ></br>
     <hr/>
     <button onclick="cambiaOggetto('prova')" style="width:200px" >Modifica div "#prova" </button></br>
     <hr/> 
     <button onclick="cambiaOggetto('prova2')" style="width:200px" >Modifica div "#prova2" </button></br>
     <hr/>
     <button onclick="stampa()"  style="width:200px" >Stampa CSS </button></br>
    </body>
    </html>
    
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Sembrerebbe funZionare! Come dovrei impostare secondo te per aggiungere altri criteri?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.