2017-05-18 3 views
0

인터넷에서 JavaScript 파일과 부트 스트랩 양식을 받았습니다. 페이지에는 2 개의 입력이 있습니다. 입력하면 숫자가 함께 추가되고 새 번호가 출력됩니다.EventListener 속성을 읽을 수 없습니다.

콘솔에서 아무 것도하지 않았으므로 2 개의 오류가 발생했습니다. 처음에는 JavaScript가 jQuery를 필요로하기 때문에 jQuery가 필요했습니다. 두 번째 것은 입니다. "잡히지 않은 TypeError : null의 속성 'addEventListener'을 읽을 수 없습니다.,이 오류가 발생하는 이유를 알 수 없습니다.

양식 코드는 다음과 같습니다

<!DOCTYPE html> 
<html> 
    <head> 

    <link rel="stylesheet" type="text/css" href="style.css"> 
    <script type="text/javascript" src="test.js"></script> 


     <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 

    <script 
     src="https://code.jquery.com/jquery-3.2.1.min.js" 
     integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
     crossorigin="anonymous"></script> 

    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 

    </head> 

    <body> 
    <div class="container text-center"> 

     <h1> 
     test title 
     </h1> 

    <form action="#" class="form-inline"> 

     <input type="text" id="first"class="form-control" placeholder="Enter your first number"> 
     <input type="text" id="second" class="form-control" placeholder="Enter your second number"> 

    </form> 

     <h2 id="result"></h2> 

    </div> 
    </body> 
</html> 

자바 스크립트 코드는 다음과 같습니다

var first = document.getElementById('first'); 
var second = document.getElementById('second'); 
var result = document.getElementById('result'); 

first.addEventListener("input", sum); 
second.addEventListener("input", sum); 

function sum() { 

    var one = parseFloat(first.value) || 0; 
    var two = parseFloat(second.value) || 0; 

    var add = one+two; 

    result.innerHTML = "Your Sum is : " + add; 

} 

그래서 내가 여기에 엉망 무슨을 설명 할 수 어쩌면 사람이 있습니까?

+0

는 DOM이로드되기 전에 당신은 JS 코드를 실행하는 :

방문에 대한 자세한 설명을 볼 수 있습니다. 로직을로드 핸들러에 배치하거나, ​​'' –

+0

바로 앞에있는 '을 입력하십시오. –

0

DOM 요소가 생성되는 것보다 먼저 자바 스크립트 파일이로드되기 때문입니다. 그래서 당신이로드 할 때, 그것은 그 때 거기에없는 첫 번째와 두 번째 요소를 찾아 볼 것입니다.

var first = document.getElementById('first'); 
 
var second = document.getElementById('second'); 
 
var result = document.getElementById('result'); 
 

 
first.addEventListener("input", sum); 
 
second.addEventListener("input", sum); 
 

 
function sum() { 
 

 
    var one = parseFloat(first.value) || 0; 
 
    var two = parseFloat(second.value) || 0; 
 

 
    var add = one+two; 
 

 
    result.innerHTML = "Your Sum is : " + add; 
 

 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 

 
    <link rel="stylesheet" type="text/css" href="style.css"> 
 
    <script type="text/javascript" src="test.js"></script> 
 

 

 
     <!-- Latest compiled and minified CSS --> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 

 
    <!-- Optional theme --> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 

 
    <script 
 
     src="https://code.jquery.com/jquery-3.2.1.min.js" 
 
     integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
 
     crossorigin="anonymous"></script> 
 

 
    <!-- Latest compiled and minified JavaScript --> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 

 
    </head> 
 

 
    <body> 
 
    <div class="container text-center"> 
 

 
     <h1> 
 
     test title 
 
     </h1> 
 

 
    <form action="#" class="form-inline"> 
 

 
     <input type="text" id="first"class="form-control" placeholder="Enter your first number"> 
 
     <input type="text" id="second" class="form-control" placeholder="Enter your second number"> 
 

 
    </form> 
 

 
     <h2 id="result"></h2> 
 

 
    </div> 
 
    </body> 
 
</html>

아래 읽기 :

(예 : index.html을) HTML 페이지를 가져 오기 을 구문 분석 시작 : 가 여기에 브라우저가에 태그로 웹 사이트를로드 할 때 발생하는 상황 HTML 파서가 외부 스크립트 파일을 참조하는 태그를 발견했습니다. 브라우저가 스크립트 파일을 요청합니다. 한편 파서는 페이지의 다른 HTML을 구문 분석하여 차단합니다. 얼마 후 스크립트가 다운로드 된 후 실행됩니다. 파서가 나머지 HTML 문서의 구문 분석을 계속합니다. Where should I put <script> tags in HTML markup?

관련 문제