2017-11-12 14 views
-1
<!DOCTYPE html> 

<html> 
    <head> 
     <title>Greet</title> 
    </head> 
    <body> 
     <form id="demo"> 
       <input id="name" placeholder="Name" type="text"/> 
       <input type="submit"/> 
     </form> 
     <script> 
       function greet() 
       { 
        alert('hello, ' + document.getElementById('name').value); 
       } 
       document.getElementById('demo').onsubmit = greet(); 
     </script> 
    </body> 

form.onsubmit 호출 기능은 어떻게 작동합니까?

경고 내가 제출 한 이름을 표시하지 않습니다. 오직 hello,. 하지만이 코드를 다시 작성하면 document.getElementById('demo').onsubmit = greet;이 작동합니다. 하지만 왜? 는 그리고 이것은뿐만 아니라 작동합니다 greet는 함수 자체를 의미하기 때문에 작동

<!DOCTYPE html> 

<html> 
    <head> 
     <title>dom0</title> 
    </head> 
    <body> 
     <form id="demo" onsubmit="greet()"> 
       <input id="name" placeholder="Name" type="text"/> 
       <input type="submit"/> 
     </form> 
     <script> 
       function greet() 
       { 
        alert('hello, ' + document.getElementById('name').value); 
       } 

     </script> 
    </body> 

답변

1

이유입니다. greet()을 쓸 때 괄호가 함수를 호출하고 출력을 반환하기 때문에 greet 함수의 출력을 전달합니다.

+0

죄송합니다. 무슨 말씀이 드는지 알고 있습니다. 그러나 나는 아직도 그것이 어떻게 작동하는지 이해하지 못합니까? greet()이 제출 된 값을 제공하지 않는 이유는 무엇입니까? 양식 -> onsubmit -> greet 함수 호출, 맞습니까? 나는 파이썬 배경이있다. 하지만 어떻게 자바 스크립트에서 함수 호출 작동 이해가 안돼? – Amy

+1

onsubmit에 값을 할당 할 때 즉시 호출되기 때문에. 따라서이 값은 비어 있습니다. 대신 함수를 전달하면 양식을 제출할 때이 함수가 호출되므로 입력 한 값에 값이 있습니다. –

+0

나는이 순간에 분실되었다. JavaScript에서 함수 호출에 대해 혼란스러워합니다. 나는 그것에 대해 생각하기 위해 휴식을 취할 필요가있다. 감사. – Amy