Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Script genera script in js

    Salve a tutti!

    Questo è il mio primo post, perciò faccio una breve presentazione e vi espongo il mio problema :P
    Il mio nome è Samuele (però preferisco essere chiamato Lati :P) ho 18 anni e sono un appassionato di grafica (2d/3d) anche se è da un bel po' che mi sono avvicinato al mondo del "web design". Ora vi espongo il mio problema in quanto ho girato in lungo e in largo ma purtroppo non ho trovato nulla In pratica vorrei creare una pagina HTML con tanto di javascript (anzi, in parte è creata, ma non funziona correttamente) e, in questa pagina, verranno creati degli script personalizzati dagli utenti, non so se mi spiego. In pratica loro inseriranno le informazioni nei vari textbox e, cliccando poi su un pulsante, venga creato lo script desiderato. Ora, il mio codice personalizzabile sarebbe un mini-menu composto da icone e un menu a comparsa e, per rendelo il più personalizzabile possibile con il generatore, vorrei che l'utente potesse decirere quante icone e quanti voci nel menu a comparsa mettere. Essendo praticamente il mio primo Javascript ho fatto come ho potuto, anche perchè su internet non ho trovato nessuna guida al riguardo, in pratica questo codice prima chiede quante icone vuole e quante voci menu, poi genera una seconda pagina con tot textbox per le icone e tot textbox per le voci del menu. Il problema è che poi, anche inserendo i valori nei textbox o comunque dando una certa azione al pulsante del generatore non compare nulla. In ogni caso vi posto il javascript se può essere utile (perdonate gli eventuali errori, come già detto è il mio primissimo javascript :P)

    function genera_p() { var n_icon = document.getElementById("n_icon").value; var n_link = document.getElementById("n_link").value; var icon; var url; if (n_icon<=5 && n_link<=10) { for (icon=1; icon<=n_icon; icon=icon+1){document.write("Icona "+ icon +": <input type=\"text\" id=\"immagine"+ icon +"\"/>
    "); for (url=1; url<=n_link; url=url+1){document.write("Nome "+ url +"-"+ icon +": <input type=\"text\" id=\"nome"+ url +"-"+ icon +"\" />Link : <input type=\"text\" id=\"link"+ url +"-"+ icon +"\" />
    ");} } document.write("<input type=\"button\" value=\"Invia\" id=\"Invio\" onclick=\"genera()\" />

    <textarea id=\"codice\"></textarea>"); } else {alert("I valori inseriti non sono validi (max icon = 5/max link = 10).")} } function genera() { var immagine = document.getElementById("immagine").value; var nome = document.getElementById("nome").value; var url = document.getElementById("link").value; document.getElementById("codice").value = "test"+ icon +"test" }

  2. #2
    Perdonate se uppo, ma in 2 giorni non ho ricevuto alcuna risposta in ogni caso scrivo anche perchè sbirciando un po' nel forum ho trovato mediante la discussione "script/discussioni utili" QUESTA discussione, in pratica è quello che volevo fare dall'inizio ma, viste le mie scarse conoscenze e anche per il fatto di non aver trovato nulla che mi potesse aiutare ho tentato a fare come ho potuto. Perciò, adesso vedo di rielaborare lo script che ho trovato per riadattarlo come serve a me, poi, cosa che ancora non so come fare, far scrivere un certo script un numero di volte quanti sono i campi di testo e con l'inserimento dei dati nello script.

  3. #3
    Ciao,
    non è facile capire esattamente cosa vuoi fare e quindi risponderti però mi sembra di aver capito che il problema principale è che nella seconda pagina, quella che generi con i document.write, il pulsante non esegue nessuna azione.

    Il motivo di questo è che la function che tu vorresti che fosse eseguita non si trova nella seconda pagina ma nella prima.

    In altre parole la function genera() non devi inserirla come hai fatto tu ma così:

    codice:
    <script type="text/javascript">
       function genera_p() {
          var n_icon = document.getElementById("n_icon").value;
          var n_link = document.getElementById("n_link").value;
          var icon;
          var url;
          if (n_icon<=5 && n_link<=10) {
             for (icon=1; icon<=n_icon; icon=icon+1){
                document.write("Icona "+ icon +": <input type=\"text\" id=\"immagine"+ icon +"\"/>
    ");
                for (url=1; url<=n_link; url=url+1){
                   document.write("Nome "+ url +"-"+ icon +": <input type=\"text\" id=\"nome"+ url +"-"+ icon +"\" />Link : <input type=\"text\" id=\"link"+ url +"-"+ icon +"\" />
    ");
                }
             }
             document.write("<input type=\"button\" value=\"Invia\" id=\"Invio\" onclick=\"genera()\" /> 
     
     <textarea id=\"codice\"></textarea>");
    
             document.write("<script type='text/javascript'> function genera() { alert('pippo'); } </scr"+"ipt>");
    
          } else {
             alert("I valori inseriti non sono validi (max icon = 5/max link = 10).")
          }
    
       }
    
    </script>
    io c'ho messo un alert ma tu mettici quello che vuoi.

    Nota che per evitare conflitti fra le chiusure di script ho spezzato la parola script in due parti che, di per sé, non significano niente quindi non disturbano lo script della prima pagina ma che, rimontate assieme, vanno a chiudere lo script della seconda pagina.

    Spero di averti dato uno spunto utile e se hai bisogno chiedi pure però fino a martedì è difficile che mi colleghi.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  4. #4
    Inanzitutto ti ringrazio per la risposta, allora quello che mi hai messo in parte va, perchè ho provato ad aggiungere delle variabili e non va, se le tolgo funziona (in pratica mi scrive nel campo di testo la parola "test"). In ogni caso cerco di spiegare meglio quello che devo fare (in effetti prima sono stato un po' vago :P); allora, vista la discussione che avevo postato prima quello che mi piacerebbe fare sarebbe che un utente può aggiungere o rimuovere campi di testo in modo dinamico e, per ogni input aggiunto, lo script deve ripetere una porzione di codice immettendo appunto i dati inseriti nel campo di testo. Un esempio di come deve uscire:

    [aggiungi icona]
    [campo di testo per icona][rimuovi icona]
    ____[aggiungi nome/link]
    ____[campo di testo link][campo di testo nome][rimuovi]

    [pulsante genera]

    [Campo di testo dove viene generato lo script]

    Adesso, mettiamo esempio che voglio creare 2 icone con 2 nomi/link per entrambe le icone, aggiungo un altro campo di testo per l'icona e per entrambe aggiungo 2 campi di testo per Nomi/link in questo modo:

    [aggiungi icona]
    [campo di testo per icona_1][rimuovi icona]
    ____[aggiungi nome/link]
    ____[campo di testo link][campo di testo nome][rimuovi]
    ____[campo di testo link][campo di testo nome][rimuovi]
    [campo di testo per icona_2][rimuovi icona]
    ____[aggiungi nome/link]
    ____[campo di testo link][campo di testo nome][rimuovi]
    ____[campo di testo link][campo di testo nome][rimuovi]

    [pulsante genera]

    [Campo di testo dove viene generato lo script]

    Ora, se clicco sul pulsante genera nel campo di testo appena sotto mi dovrà apparire uno script tipo:

    codice:
    <table id="menu_laterale" cellspacing=0>
    <tr><td id="up_menu"></td></tr>
    <tr><td id="cent_menu">
    <ul>[*][img]LINK_IMMAGINE[/img]
    <ul>[*]NOME LINK[*]NOME LINK[/list]
    
    <ul>[*][img]LINK_IMMAGINE[/img]
    <ul>[*]NOME LINK[*]NOME LINK[/list]
    
    </td></tr>
    <tr><td id="bot_menu"></td></tr>
    </table>
    Ovviamente con i campi sostituiti con quello immesso dall'utente. Io per il momento sto cercando di studiarmi lo script per l'aggiunta/rimozione dei campi di input, anche se ci capisco ben poco :P Ovviamente se avrò nuovi aggiornamenti al riguardo vi farò sapere, io per il momento provo a fare quel che posso

  5. #5
    Ciao,
    scusami ma continuo a non capire, il fatto è che non ho idea dell'utilizzo che vuoi fare di questo script per cui non riesco a immaginare cosa intendi quando parli di menu, icone, link e testi ed anche la notazione che usi, che per te è sicuramente significativa, a me risulta abbastanza oscura, per esempio non ho idea di cosa intendi dire scrivendo questo:

    [aggiungi icona]
    [campo di testo per icona_1][rimuovi icona]
    ____[aggiungi nome/link]
    ____[campo di testo link][campo di testo nome][rimuovi]
    ____[campo di testo link][campo di testo nome][rimuovi]
    [campo di testo per icona_2][rimuovi icona]
    ____[aggiungi nome/link]
    ____[campo di testo link][campo di testo nome][rimuovi]
    ____[campo di testo link][campo di testo nome][rimuovi]
    quindi l'unica cosa che posso fare è di andare per tentativi dandoti degli esempi su cui lavorare, come questo:

    codice:
    <html>
    <head>
    
    <script type="text/javascript">
       function genera_p() {
          var n_icon = document.getElementById("n_icon").value;
          var n_link = document.getElementById("n_link").value;
          var icon;
          var url;
          if (n_icon<=5 && n_link<=10) {
             document.write("<form id=\"form_1\" name=\"form_1\">\r\n");
             for (icon=1; icon<=n_icon; icon=icon+1){
                document.write("Icona "+ icon +": <input type=\"text\" id=\"id_immagine"+ icon +"\"/>
    \r\n");
                for (url=1; url<=n_link; url=url+1){
                   document.write("Nome "+ url +"-"+ icon +": <input type=\"text\" id=\"id_nome"+ url +"_"+ icon +"\" />\r\nLink : <input type=\"text\" id=\"id_link"+ url +"_"+ icon +"\" />
    \r\n");
                }
             }
             document.write("<input type=\"button\" value=\"Invia\" id=\"Invio\" onclick=\"genera()\" /> 
     
     \r\n<textarea cols=\"100\" rows=\"10\" id=\"codice\"></textarea>\r\n</form>\r\n");
    
             document.write("<script type='text/javascript'>\r\nfunction genera() {\r\ndocument.getElementById('codice').value = 'I valori inseriti sono:\\r\\n';\r\nfor (elem in document.form_1) {\r\nif (elem.indexOf('id_') == 0) {\r\ndocument.getElementById('codice').value += document.getElementById(elem).id + ' --> ' + document.getElementById(elem).value + '\\r\\n';\r\n}\r\n}\r\n}\r\n</scr"+"ipt>");
    
          } else {
             alert("I valori inseriti non sono validi (max icon = 5/max link = 10).")
          }
    
       }
    
    </script>
    
    
    </head>
    
    <body>
    
    <input type="text" id="n_icon">
    <input type="text" id="n_link">
    
    <input type="button" onclick="genera_p()">
    
    
    </body>
    </html>
    nel quale nella seconda pagina i valori inseriti nelle textbox vengono trasferiti, alla pressione del pulsante, nella textarea.

    Come vedi c'è una prima frase "i valori inseriti sono" che, essendo al di fuori del ciclo, potrebbe corrispondere alla apertura della tabella del tuo esempio, e poi un ciclo di esame delle textbox in cui inserire la scrittura di tutte le righe e caselle.

    Per individuare gli elementi del form li ho chiamati tutti con "id_..." e poi faccio il test con la indexOf.

    Nota che i "\\r\\n" sono per andare a capo nella textarea mentre i "\r\n" servono solo a rendere più leggibile il codice quando visualizzi il sorgente pagina.
    Spero che possa esserti d'aiuto.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Inanzitutto ti ringrazio ancora per l'aiuto, e perdonami se le mie spiegazioni sono un po' vaghe, senza rendermene conto dò sempre per scontato ogni cosa :P Vedrò di iniziare dall'inizio. Allora, in pratica io ho scritto un codice per un mini-menu che, al passaggio, si apre una sottospecie di tendina con i vari link. Non so se posso linkarlo, ma alla fine è un forum di prova, perciò non penso possa essere ritenuto spam :P QUESTO è il menu finito. Adesso, visto che lo script html potrebbe essere di difficile comprensione all'utente, perciò non saprebbe come modificarlo, volevo appunto creare questo generatore per facilitarli; in pratica, inserendo nei campi i vari dati genera uno script già personalizzato. Ora, per questo mini-menu, come puoi vedere nella pagina di prova, ha delle icone e, passando sopra a queste icone esce un menu a tendina con vari link, perciò per creare lo script personalizzato bisogna cambiare l'icona, il nome del link nel menu a tendina e, appunto, il link cliccando nel nome. Adesso, tanto per fare un esempio, QUESTO è lo script diciamo basico, tu scrivi nei campi, poi premendo genera crea lo script nell'area di testo sottostante. Fin qui non c'è alcun problema, se non fosse che per renderlo più personalizzabile possibile l'utente possa scegliere quante icone/link/nomi può mettere in questo mini-menu. Il mio problema sta proprio in questo, in pratica io inizialmente (come avevo detto nel secondo post) volevo che l'utente potesse aggiungere in modo dinamico i campi di testo, come mostrato QUI, ovviamente viste le mie scarse conoscenze non sono riuscito a farlo (oltre al fatto di non esser riuscito a trovare qualche guida all'inizio), allora tentai con il metodo dell'immissione dei numero dei campi, in pratica scrivevi quante icone e nomi link volevi e nella pagina dopo creava i campi appositi, come difatti hai fatto tu. Ora, quello che vorrei tentare di fare, è creare, come in quella discussione che ho linkato prima, dei campi che si aggiungono/rimuovono dinamicamente, cioè alla pressione di un pulsante. Ora, non avendo molte conoscenze del javascript sto solamente andando a logica, anche se i risultati scarseggiano, difatti non sono riuscito nemmeno a creare questi campi dinamici come volevo io. Quindi per concludere, quello che mi servirebbe è solamente una pagina che crei lo script del mini-menu con la possibilità di far scegliere all'utente quante icone/nomi/link aggiungere al proprio menu personalizzato. Spero stavolta di essere stato abbastanza chiaro, ho cercato di non tralasciare nulla :P In ogni caso rinnovo ancora i miei ringraziamenti per l'aiuto

    EDIT: Vorrei anche aggiungere che ho provato il tuo script, non so perchè ma nell'area di testo mi appare solo "I valori inseriti sono:"

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.