Visualizzazione dei risultati da 1 a 6 su 6

Discussione: This Javascript

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    27

    This Javascript

    Salve a tutti,

    volevo capire alcune cose riguardo a "this" in javascript, in particolare su questo esempio tratto da w3schools:

    Codice PHP:
    <html> <head
    <
    script type="text/javascript"
    function 
    validate_required(field,alerttxt

    with (field)   
    {   
    if (
    value==null||value=="")     
    {     
    alert(alerttxt);return false;     
    }   else     {     return 
    true;     }   } }  

    function 
    validate_form(thisform) { 
    with (thisform)   {   
    if (
    validate_required(email,"Email must be filled out!")==false)   {
    email.focus();return false;}   } }
     
    </script>
    </head>  
    <body> <form action="submit.htm" onsubmit="return validate_form(this)" method="post"> 
    Email: <input type="text" name="email" size="30"> <input type="submit" value="Submit"> 
    </form> 
    </body>  
    </html> 
    la funzione validate_form(thisform) cosa prende come parametro, document.forms[]?
    la chiamata validate_required(email, "Email must be filled"), come fa a passargli "email"? Non dovrebbe passarlo tramite document.getElementByName("email") ??

    Inoltre:
    if (value==null||value==""), come può essere usata se value non esiste?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: This Javascript

    Originariamente inviato da Anick
    la funzione validate_form(thisform) cosa prende come parametro, document.forms[]?
    il form, comunque tu voglia accedervi in altro modo e' sempre e solo quel form
    document.forms['nomeForm'] se ne conoscessi il name
    document.forms[0] se il form in questione e' il primo del documento
    document.nomeForm
    document.getElementById('idForm')
    la chiamata validate_required(email, "Email must be filled"), come fa a passargli "email"? Non dovrebbe passarlo tramite document.getElementByName("email") ??
    se abbiamo detto che thisForm equivale a document.nomeForm
    with(thisForm) email equivale a document.nomeForm.email
    che accede correttamente al campo con name="email" del form in questione
    Inoltre:
    if (value==null||value==""), come può essere usata se value non esiste?
    value esiste per tutti i campi form, che venga esplicitato o meno nel markup
    considera per esempio il caso di una textarea dove il value e' racchiuso tra <textarea></textarea>, non ha nel markup un value="qualcosa" ma puoi sempre leggerlo e settarlo

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    27

    Re: Re: This Javascript

    Originariamente inviato da Xinod
    il form, comunque tu voglia accedervi in altro modo e' sempre e solo quel form
    document.forms['nomeForm'] se ne conoscessi il name
    document.forms[0] se il form in questione e' il primo del documento
    document.nomeForm
    document.getElementById('idForm')
    Ho capito. In quell'esempio però il form non ha un nome, quindi con this posso "scavalcare" anche questa proprietà oppure conviene mettere il name per i form?

    Originariamente inviato da Xinod
    se abbiamo detto che thisForm equivale a document.nomeForm
    with(thisForm) email equivale a document.nomeForm.email
    che accede correttamente al campo con name="email" del form in questione
    Ecco, ciò che non capisco è come collega email con thisform? la forma corretta non dovrebbe essere, allora, questa: (validate_required(thisform.email,"Email must be filled out!") ???
    e quindi pure: thisform.email.value ?

    Grazie, infinitamente.

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    passando this passi il riferimento a quel form, in questo caso non importa che esso abbia name o id
    se per esempio dovessi parlare di quel form in una funzione a cui non passi tra gli argomenti un riferimento al form e' ovvio che ti convenga avere un name o un id tramite fare correttamente riferimento ad esso

    ancora una volta, potresti comunque non aver bisogno di id o name, perche' c'e' una collezione forms che raccoglie tutti i form del documento, per cui il primo form del documento sarebbe
    document.forms[0]
    e' chiaro che procedere in questo modo ti espone a rischi in caso di modifiche future:
    quello che ora e' il primo form del documento potrebbe non esserlo per sempre...

    Ecco, ciò che non capisco è come collega email con thisform? la forma corretta non dovrebbe essere, allora, questa: (validate_required(thisform.email,"Email must be filled out!") ???
    sarebbe corretto,
    nello script originale puo' omettere thisform perche' quando parla di "email" il tutto e' racchiuso in un with(thisform),
    nota il successivo
    email.focus();

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    27
    Originariamente inviato da Xinod
    passando this passi il riferimento a quel form, in questo caso non importa che esso abbia name o id
    se per esempio dovessi parlare di quel form in una funzione a cui non passi tra gli argomenti un riferimento al form e' ovvio che ti convenga avere un name o un id tramite fare correttamente riferimento ad esso

    ancora una volta, potresti comunque non aver bisogno di id o name, perche' c'e' una collezione forms che raccoglie tutti i form del documento, per cui il primo form del documento sarebbe
    document.forms[0]
    e' chiaro che procedere in questo modo ti espone a rischi in caso di modifiche future:
    quello che ora e' il primo form del documento potrebbe non esserlo per sempre...


    sarebbe corretto,
    nello script originale puo' omettere thisform perche' quando parla di "email" il tutto e' racchiuso in un with(thisform),
    nota il successivo
    email.focus();
    quindi in pratica stiamo parlando del DOM, nel senso che discende da un particolare elemento...Ad es. se io avessi avuto un qualcosa del tipo
    with(thisform.email) , potevo mettere direttamente:
    with(thisform.email){
    focus();
    }
    perchè si riferiva già ad email, se ho capito bene

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il tuo esempio e' corretto
    ma non siamo parlando di DOM e non va fatta confusione con le relazioni che intercorrono tra nodi

    qui veniva posto lo stesso dubbio

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.