2016-06-02 25 views
6

Czy ktoś może mi wyjaśnić, dlaczego funkcja o nazwie "akcja" tworzy błąd typu w następującym kodzie, gdy tylko przycisk jest otoczony znacznikami formularza. Zakładam, że prowadzi to do dziwnej sprzeczności z atrybutem działania formularza, ale zastanawiam się, dlaczego tak się dzieje w tym zakresie („działanie” nie jest zdefiniowane w inny sposób):Funkcja JavaScript o nazwie "akcja"

<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

_Jestem zaskoczony, że nie ma duplikatu dla tego pytania_ – Rayon

+0

W ten sposób działają wbudowane funkcje obsługi zdarzeń. Zobacz moją odpowiedź tutaj: http://stackoverflow.com/questions/6941483/onclick-vs-event-handler/21975639#21975639 –

+0

@Rayon: o to pytano wcześniej, ale mogę sobie wyobrazić, że trudno jest nazwać pytanie lub czego szukać bez wiedzy o problemie. Mam na myśli, że tytuł tego pytania nie jest bardzo wskazujący na problem. –

Odpowiedz

5

Wewnątrz formie action jest odwołanie do akcji formularza. Jeśli zmienisz swój onclick na alert(action) otrzymasz akcję formularza (która będzie pustym łańcuchem dla twojego konkretnego formularza).

W ten sam sposób, form będzie odwołaniem do formularza, a method będzie zawierał metodę formularza, jeśli użyjesz ich w formularzu. window.action będzie nadal odnosić się do funkcji.

+0

@Rayon: Naprawdę? [Nie w chromie, w moich eksperymentach] (https://jsfiddle.net/hgczsppr/) –

+0

Ooh .. Masz rację! Nie zmieniłem "Typu obciążenia" w skrzypcach :( – Rayon

+0

Głupi mnie nie widzieli, że rozmowa jest problemem, a nie sama funkcja Teraz wszystko ma sens ponownie. – needfulthing

Powiązane problemy