Visualizzazione risultati 1 fino 12 di 12

Discussione: [JS] una variabile in un comando..

  1. #1
    Guest

    Predefinito [JS] una variabile in un comando..

    Salve.
    Premetto che JS è per me una rogna. Io vorrei fare una cosa tipo questa


    function updateIntestazione( id, ragione, campo1, campo2 ) {
    var op = window.opener;
    if (op){
    op.document.insOrd.campo2.value = id;
    op.document.insOrd.campo1.value = ragione;
    }
    }

    dove campo1 e campo2 sono i nomi dei campi però contenuti nelle variabili. JS ovviamente interpreta il nome dei campi come campo1 e campo2 e invece questi cambiano ogni qual volta io chiamo la funzione con argomenti diversi (ovviamente). Ho provato a cercare ed ho trovato l'operatore di somma che però non funziona e eval() che non me lo fa funzionare lo stesso. Se metto i nomi dei campi anzichè le variabili funziona.
    Qualcuno sa spiegarmi dove sbaglio?

    Grazie

  2. #2
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    mmm
    ma perchè non provi al posto di op...

    document.getElementById(campo1).value = id;

    (occhio che così non prende il name, bensì l'id, e quindi ogni campo dovrà avere id="blabla" )
    Funziona con tutti i browsers...

  3. #3
    Guest

    Predefinito

    Come specificato nel post io non sono esperto (anzi) quindi non conoscevo questa ipotesi.


    function updateIntestazione( id, ragione, campo1, campo2 ) {
    var op = window.opener;
    if (op){
    op.document.getElementById(campo2).value = id;
    op.document.getElementById(campo1).value = ragione;

    }
    }

    PERFETTO grazie a te! Funziona!

  4. #4
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

  5. #5
    Guest

    Predefinito

    relativamente a questo problema
    vorrei fare la tipica cosa del counter in una textarea (ovvero conti i chr inseriti)
    ho fatto questo ma non funge

    function keyup( obg, max, rcpt) {
    var str = new String(what.value);
    var len = str.length;

    document.scriviMsg.rcpt.value = len;

    }


    <textarea onkeyup="keyup(this,255,rcpt); return true;" ....>


    <input readonly = "readonly" id = "rcpt" name = "rcpt" value = "0" size = "1" />

    cos'altro sbaglio?

    [edit] scriviMsg è il nome del form

  6. #6
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Intanto continua ad utilizzare document.getElementById() (lo so che è palloso scriverlo, perchè è lungo un'infinità....)

    Poi prova a cambiare il nome della funzione (che ne so, metti contatore)

    Così dovrebbe andare:
    Cos'è what?
    Codice HTML:
    function contatore(max, rcpt) {
    var len = document.getElementById('scriviMsg').value.length;
    
    document.getElementById(rcpt).value = len;
    
    }
    
    <textarea onkeyup="contatore(255,'rcpt'); return true;" ....>
    
    
    <input readonly = "readonly" id = "rcpt" name = "rcpt" value = "0" size = "1" />
    Prova un pò!

  7. #7
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    "what" è evidentemente il vecchio nome del primo parametro (forse così com'era in un esempio, poi ci si dimentica..) che poi è stato chiamato "obg" (che sarebbe il riferimento al campo textarea stesso, infatti nell'evento sulla textarea viene passato "this"), solo quella è la svista il resto sembra più che sensato.

    quindi semplicemente:
    Codice:
    function keyup( obg, max, rcpt) {
    var str = new String(obg.value);
    var len = str.length;
    document.scriviMsg.rcpt.value = len;
    }
    dovrebbe andare benissimo.

    Leo91:
    ...ma allora hai un rapporto insano con questo getElementById
    lo metti ovunque anche dove non serve, dai per i campi di un form io eviterei no?
    e cmq nel tuo codice prendi con getElementById il riferimento all'oggetto FORM.. che come proprietà length non so se ha un valore, forse il numero elementi? e non la textarea...
    Ultima modifica di heracleum : 24-08-2006 alle ore 23.48.08
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  8. #8
    Guest

    Predefinito

    grazie leo e grazie heracleum....
    funziona.

    Nota: vorrei spezzare una lancia a favore di questo forum e di Heracleum. Non riuscivo a capire come si faceva una cosa e mi sono messo a fare una ricerca sul forum e indovinate? Non solo ho trovato quello che cercavo ma la soluzione è stata data da Heracleum ma indovinate chi ha fatto la domanda? Ero proprio io e nel frattempo avevo dimenticato la soluzione....

    W la ricerca!!!!

  9. #9
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da heracleum
    Leo91:
    ...ma allora hai un rapporto insano con questo getElementById
    lo metti ovunque anche dove non serve, dai per i campi di un form io eviterei no?
    e cmq nel tuo codice prendi con getElementById il riferimento all'oggetto FORM.. che come proprietà length non so se ha un valore, forse il numero elementi? e non la textarea...
    Eheheh! Allora si vede che non ho capito bene (anche perchè non è che io sia un geniaccio del JavaScript).
    Pensavo che getElementById dovesse stare sempre lì (nel caso di cose [ ] prese da elementi come i form, elementi esterni al JS).
    Comunque se fai document.getElementById('textareaid').value.length ; esso ti ridà la lunghezza della textarea (vabè, quanti caratteri ci sono! ).

    Ma sulla stracompatibilità ci siamo, no?

    Ciaoo!

    Citazione Originalmente inviato da demenziale
    grazie leo e grazie heracleum....
    funziona.
    Non ho capito quale dei due funziona, ma grazie e prego del grazie


    Ciaoooo!

  10. #10
    Guest

    Predefinito

    il getElementById ti restituisce l'elemento dato l'id. ma se tu (come io ho fatto) gli passi l'elemento stesso non serve...

    cmnq ho sistemato il mio codice come mi ha suggerito heracleum e funziona

  11. #11
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito Leo91, the getElementById pusher

    Citazione Originalmente inviato da demenziale
    ... e indovinate? Non solo ho trovato quello che cercavo ma la soluzione è stata data da Heracleum ma indovinate chi ha fatto la domanda? Ero proprio io e nel frattempo avevo dimenticato la soluzione....

    Sono gli smemorati come noi che "fanno numero" nel forum
    chi si dimentica le soluzioni ricevute, chi quelle date ghghgh

    Leo91:
    No no ma scherzavo, perché negli ultimi trhead dove t'ho incontrato stavi sempre dietro l'angolo fare lo "spacciatore" di getElementById
    Ma è ovvio che oramai è il metodo ufficiale per reperire riferimenti ad oggetti e sicuramente è sempre la scelta migliore per compatibilità, poi vabè personalmente devo dire che per raggiungere i campi di form ancora uso il metodo classico, per il resto sempre e solo getElementById. Se vuoi mi metto a spacciarlo pure io.. ma non vorrei rubarti il territorio
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  12. #12
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da heracleum
    Leo91:
    No no ma scherzavo, perché negli ultimi trhead dove t'ho incontrato stavi sempre dietro l'angolo fare lo "spacciatore" di getElementById
    Ma è ovvio che oramai è il metodo ufficiale per reperire riferimenti ad oggetti e sicuramente è sempre la scelta migliore per compatibilità, poi vabè personalmente devo dire che per raggiungere i campi di form ancora uso il metodo classico, per il resto sempre e solo getElementById. Se vuoi mi metto a spacciarlo pure io.. ma non vorrei rubarti il territorio

    Questa me la segno!!!

    Beh il "mio territorio" non è vasto!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •