Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114

    Differenza ra Eval e InnerHTML?!

    Mi sto chiedendo che diferenza passi ra il codice Eval e l?innerHTML.. entrambi riscrivono e modificano un qualcosa... quele dei due è meglio utilizzare per i determinati script... cioè quando si usa l'uno, come e con chi... e viceversa per l'altro codice!??

    Ciao!!!

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

    Re: Differenza ra Eval e InnerHTML?!

    Originariamente inviato da Igreo
    Mi sto chiedendo che diferenza passi ra il codice Eval e l?innerHTML.. entrambi riscrivono e modificano un qualcosa...
    eval non riscrive proprio un bel niente,
    eval serve a valutare un' espressione javascript presentata sotto forma di stringa, questo ti permette di concatenare anche pezzi dell' espressione
    e prima che capisci male ecco un esempio
    var wh="Width" // x es. potrebbe essere "Height"
    var misura=eval("document.getElementById('tuoId').offs et"+wh);

    se non valuti non puoi tenere parte del nome della proprieta' come una variabile

    eval e' da evitare, ovunque si possa, perche' potrebbe non essere supportato dai browser in futuro e perche' nel 99% dei casi e' sostituibile con costrutti piu' scorrevoli e dalle performance migliori

  3. #3
    innerHTML è una proprietà non standard ( inizialmente solo per IE ), ma che per la grande comodità che offre è supportata da tutti i browser.

    innerHTML consente di modificare il contenuto di un elemento html, in parole povere di scriverci sopra ( anche e soprattutto dopo il caricamento della pagina ).

    Da non confondere con document.write che invece scrive direttamente nella pagina: se usato dopo il caricamento di questa, cancella tutto il resto.

    Esempio innerHTML:
    codice:
    window.onload=function() {
    document.getElementById("myDiv").innerHTML="
    
    Ciao
    Mondo</p>";
    }

  4. #4

    Re: Re: Differenza ra Eval e InnerHTML?!

    Originariamente inviato da Xinod
    var wh="Width" // x es. potrebbe essere "Height"
    var misura=eval("document.getElementById('tuoId').offs et"+wh);
    // esempio appunto per evitare eval ...
    var wh="Width" // x es. potrebbe essere "Height"
    var misura = document.getElementById('tuoId')["offset" + wh];


    Originariamente inviato da Xinod
    se non valuti non puoi tenere parte del nome della proprieta' come una variabile
    un pò forviante come dichiarazione ... (lo dico per lui, vedi esempio appena mostrato)


    Originariamente inviato da Xinod
    eval e' da evitare, ovunque si possa, perche' potrebbe non essere supportato dai browser in futuro
    non mi risulta ... spero non ti stia sbagliando anche tu con object.eval, tutt'altra cosa ...


    Originariamente inviato da Xinod
    e perche' nel 99% dei casi e' sostituibile con costrutti piu' scorrevoli
    giusto, anche più puliti, facili da debuggare, pensati logicamente parlando


    Originariamente inviato da Xinod
    e dalle performance migliori
    purtroppo non è sempre vero, eval in certi casi permette di fare "alchimie" altrimenti lente il 3000% in più ... mi sono dovuto arrendere ad eval proprio in una delle mie ultime classi per evitare di aspettare 5 secondi ... contro 10 millesimi ...


    eval solitamente è meglio non usarlo, eval può permettere ad altri di modificare stringhe valutate e di far danni allo script, come accade con i linguaggi servers se basati su eval, ed inoltre lascia "alla macchina" fare le operazioni, non allo sviluppatore (machine does machine il detto ... o qualcosa del genere).

    la cosa da tenere a mente però ... è che in tutto questo, innerHTML non c'entra una fava


    [edit]
    per chi volesse approfondire il discorso eval ...

    JavaScript 2.0 ... che "ancora deve uscire ufficialmente":
    http://developer.mozilla.org/present...cript/#slide34
    eval ? presente

    vecchia discussione in merito
    http://forum.html.it/forum/showthrea...readid=1002586

    scaturito da un altro post:
    http://forum.html.it/forum/showthrea...498&perpage=15
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114

    Re: Re: Re: Differenza ra Eval e InnerHTML?!

    [QUOTEla cosa da tenere a mente però ... è che in tutto questo, innerHTML non c'entra una fava [/QUOTE]

    Azzarola, potevi essere almeno un pò più delicato.. oltretutto io mi chiamo fabio che in latino significa fava! Mha!!^^

    Ciao e grazie...

    PS. Vi faccio un'appunto, avete detto molto sui problemi di eval, ma nulla o poco (e ringrazio chi lo ha fatto!) circa l'innerHTML! Ci sono delle lacune per questo tipo di elemento? Può causare delle intromissioni? ecc..!

  6. #6

    Re: Re: Re: Re: Differenza ra Eval e InnerHTML?!

    Originariamente inviato da Igreo
    Azzarola, potevi essere almeno un pò più delicato.. oltretutto io mi chiamo fabio che in latino significa fava! Mha!!^^
    hai ragione, scusa ... allora diciamo che innerHTML con eval non c'entra una fabio



    Originariamente inviato da Igreo
    PS. Vi faccio un'appunto, avete detto molto sui problemi di eval, ma nulla o poco (e ringrazio chi lo ha fatto!) circa l'innerHTML! Ci sono delle lacune per questo tipo di elemento? Può causare delle intromissioni? ecc..!
    innerHTML non è un elemento, ma un parametro.
    E' il parametro NON standar per scrivere o leggere il contenuto di un elemento

    <div id="pippo">ciao</div>

    alert(document.getElementById("pippo").innerHTML); // avvisa "ciao"
    document.getElementById("pippo").innerHTML = "ciao ciao"; // cambia il contenuto del div

    a differenza di eval, innerHTML non è standard, quindi non è visto di buon occhio dai browsers diversi da IE ma è diventato standard de facto, quindi praticamente tutti lo supportano.

    A differenza del DOM, innerHTML cambia il documento, quindi bisogna fare attenzione a forms, input o altro perchè rischi di perdere dati (o eventi, se assegnati).

    In altri casi invece, innerHTML è la soluzione più veloce per inserire qualcosa in un nodo (o leggerne le informazioni)

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7

    Re: Re: Re: Differenza ra Eval e InnerHTML?!

    Originariamente inviato da andr3a
    // esempio appunto per evitare eval ...
    var wh="Width" // x es. potrebbe essere "Height"
    var misura = document.getElementById('tuoId')["offset" + wh];
    Non credevo proprio si potesse usare questa sintassi
    Ma cosa intendi per object.eval?

    Non è che hai un programma per valutare la velocità di uno script o qualche guida per rendere il codice più veloce?

    Un altra cosa: nel caso di oggetto[proprieta]="ciao" va tutto ok, ma nel caso proprietà sia in realtà un metodo? Ad esempio

    met="setAttribute('title', 'ciao')";
    document.body[met];

    non funziona:
    secondo te come si può evitare eval in questo caso?

  8. #8
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    L'"offset" a cosa si riferisce? Cioè a cosa serve quello script postato?

    var wh="Width" // x es. potrebbe essere "Height"
    var misura = document.getElementById('tuoId')["offset" + wh];


    Serve per dare un valore al width di un determinato elemento? O meglio per individuare l'elemento e il parametro... ma l'offset cosa fa? Legge l'elemento?

  9. #9
    Valuta il width di un elemento. Il problema è proprio il fatto che valuta, poichè IE può dare problemi con bordi e altro.

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

    Re: Re: Re: Differenza ra Eval e InnerHTML?!

    Originariamente inviato da andr3a
    non mi risulta ... spero non ti stia sbagliando anche tu con object.eval, tutt'altra cosa ...
    infatti ho sbagliato, non e' la top-level function eval ad essere deprecata ma l' omonimo metodo di object, sorry

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.