M N
458
2021-06-08 09:06:59 작성 2021-06-08 09:07:50 수정됨
10
717

Uncaught ReferenceError: submit is not defined at HTMLButtonElement.onclick 오류



                function reset() {
		        location.reload();
		}
			
		function submit() {
			var lastCheckOne = "where and";
			var lastCheckTwo = "where or";
			
			if( duplicateCheck(lastCheckOne) == 2 ){ query = query.replace(/^lastCheckOne/, "where"); }
			if( duplicateCheck(lastCheckTwo) == 2 ){ query = query.replace(/^lastCheckTwo/, "where"); }
			console.log(query);
		}	


<button id="sbm-btn" onclick="submit()">조건 검색</button>
<button id="reset-btn" onclick="reset()">초기화</button>


HTML태그에 onclick 메소드를 설정하고 자바스크립트로 위처럼 지정해줬는데 

어째서 함수가 지정되지 않았다는 오류가 나오는지 모르겠습니다

0
  • 답변 10

  • qwer1234!@#$
    160
    2021-06-08 09:13:38
    duplicateCheck 이라는 function은 있는지요?
    var query 는 위에 선언 되어 있는지요?
    submit 안의 내용 다 지우고 console만 찍으면 찍히는지요?
  • M N
    458
    2021-06-08 09:14:47

    duplicateCheck 함수문과 var query 는 전역위치에 만들어져있습니다

  • woo.s.o
    503
    2021-06-08 09:17:59

    혹시 스크립트를 태그보다 위쪽에 선언 하셨나요?

    태그 아래쪽으로 <body> 안쪽에 스크립트를 이동시켜 보세요

  • M N
    458
    2021-06-08 09:18:41

    네 보디태그 위쪽에 지정해줬는데 이게 오류의 원인인가요..? 이유를 알수있을까요?

  • M N
    458
    2021-06-08 09:23:35

    @woo.s.o

    body태그안에 스크립트를 생성하면

    위의 스크립트문에서 전역으로 설정한 var query값이 적용이 안되는데 

    아래에 스크립트문을 만들어줘야만하나요?

  • M N
    458
    2021-06-08 09:24:38

    @ qwer1234!@#$

    submit 함수문에 console.log로만 써넣어도 오류는 동일하게 발생합니다

  • M N
    458
    2021-06-08 09:26:56

    @woo.s.o

    모든 스크립트문을 body태그 안쪽으로 닫히는 body태그 바로 안쪽에 지정해줘도

    동일한 오류가 발생합니다

  • M N
    458
    2021-06-08 09:38:27

    $("#sbm-btn").on("click",function(){

           console.log(query);

    });

    로 선언하면 정상적으로 작동하지만 어째서 위의 방식은 오류가 발생하는지 이유를 모르겠네요..

  • woo.s.o
    503
    2021-06-08 10:16:12 작성 2021-06-08 10:17:59 수정됨
  • M N
    458
    2021-06-08 10:55:17

    @woo.s.o

    감사합니다 제가 전역변수의 의미를 잘못 깨닫고있었네요

    $(document).ready 함수로 지정해주면 그게 전역으로 설정되어지는줄 알았는데

    그 밖에 window에 설정하는게 전역설정이었네요

  • 로그인을 하시면 답변을 등록할 수 있습니다.