2016-06-02 26 views
6

Qualcuno può spiegarmi perché una funzione chiamata "azione" crea un errore di tipo nel seguente codice non appena il pulsante è circondato dai tag del modulo. Presumo che ciò porta ad una strana conflitto con attributo action del form, ma mi chiedo perché succede in questo ambito ("azione" non è definito in altro modo):Funzione JavaScript denominata "azione"

<html> 
<head> 
    <script type="text/javascript"> 
     function action() { 
      alert('test'); 
     } 
    </script> 
</head> 
<body> 
    <form> 
     <input type="button" value="click" onClick="action();"> 
    </form> 
</body> 
</html> 
+1

_Sono sorpreso che non vi è alcun duplicato per questa domanda_ – Rayon

+0

Questo è il modo in cui i gestori di eventi inline funzionano. Vedere la mia risposta qui: http://stackoverflow.com/questions/6941483/onclick-vs-event-handler/21975639#21975639 –

+0

@ Rayon: questo è stato chiesto prima, ma posso immaginare che è difficile dare un nome alla domanda o cosa cercare senza sapere qual è il problema. Voglio dire, il titolo di questa domanda non è molto indicativo del problema. –

risposta

5

All'interno del modulo, action è un riferimento a stringa all'azione modulo. Se cambi il tuo onclick su alert(action) otterrai l'azione del modulo (che sarà una stringa vuota per il tuo modulo specifico).

Allo stesso modo, form sarà un riferimento a un modulo e method conterrà il metodo di modulo, se li si utilizza nel modulo. window.action farà ancora riferimento alla tua funzione.

+0

@ Rayon: Davvero? [Non in chrome, nei miei esperimenti] (https://jsfiddle.net/hgczsppr/) –

+0

Ooh .. Hai ragione! Non ho cambiato 'Load Type' in Fiddle :( – Rayon

+0

Stupid me non ha visto che la chiamata è il problema, non la funzione stessa. Ora tutto ha senso di nuovo. – needfulthing