Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    codice non funzionante ma che non dà errore

    Ho un pulsante con questo codice:
    codice:
    <INPUT type="button" value="Button" id="button1" onclick="window.setTimeout(function(){this.disabled=true;}, 1);">
    Nel mio intendimento significa:
    fra 1 millisecondo disabilita questo medesimo pulsante...

    In IE funziona. In Firefox no, ma non dà neanche alcun tipo di errore

    Perchè? a cosa punta this? alla funzione? al controllo?

    Grazie se mi farete capire

    Pietro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il this non puoi usarlo in quel modo.

    Il setTimeout() prende la stringa contenuta nel primo parametro e la elabora dopo un tempo definito.
    Quindi al momento dell'elaborazione della stringa il this non ha significato.
    Puoi usare invece (nel tuo caso):
    window.setTimeout ('document.getElementById(\"'+this.id+'\").disable d=\"true\"', 1);

    Nota le backslash davanti alle virgolette interne per non farle interpretare dal parser HTML assieme a quelle che racchiudono l'argomento dell'evento.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Mich_
    Il this non puoi usarlo in quel modo.

    Il setTimeout() prende la stringa contenuta nel primo parametro e la elabora dopo un tempo definito.
    Quindi al momento dell'elaborazione della stringa il this non ha significato.
    Puoi usare invece (nel tuo caso):
    window.setTimeout ('document.getElementById(\"'+this.id+'\").disable d=\"true\"', 1);

    Nota le backslash davanti alle virgolette interne per non farle interpretare dal parser HTML assieme a quelle che racchiudono l'argomento dell'evento.
    Grazie In effetti, così come ho scritto funziona in IE (ma non fa testo, perchè permette le cose più assurde). Se sostituisco this con document.Form1.Button1 allora funziona sia in IE sia in Firefox. Non ho provato, ma sono quasi sicuro che funzioni pure passando a setTimeout il nome di una funzione che recupera l'oggetto con event.

    Comunque, grazie
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho corretto così e sembra funzionare:

    codice:
    onclick="var v=this;window.setTimeout(function(){v.disabled=true;}, 1);"
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Solo un appunto alla tua sintassi.

    La variabile v deve essere definita a livello globale, mentre come fai tu non so e` corretto (la domanda e`: uno script dentro un evento e` globale?).

    Quindi:
    in uno script fuori da funzioni:
    var v;

    nel tuo evento:
    onclick="v=this;window.setTimeout(function(){v.dis abled=true;}, 1);"
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Mich_
    Solo un appunto alla tua sintassi.

    La variabile v deve essere definita a livello globale, mentre come fai tu non so e` corretto (la domanda e`: uno script dentro un evento e` globale?).

    Quindi:
    in uno script fuori da funzioni:
    var v;

    nel tuo evento:
    onclick="v=this;window.setTimeout(function(){v.dis abled=true;}, 1);"
    Ecco, l'esperto sei tu io ho pensato che this, IE lo interpreta come controllo corrente, mentre Firefox come classe corrente. Ho provato e mi sembra che funzioni :master: ma io non sono esperto

    Pietro

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.