2014-03-01 3 views
0

자바 스크립트 기능을 사용하려고합니다. 내 문제는 내가 얻을 수 있다는 것입니다 여기에외부 파일 javascript에서 Uncaught ReferenceError

Uncaught ReferenceError: getExercies is not defined 내 코드입니다 :

build_workout_functions.js 파일 :

이 페이지 코드
<script> 
function getExercies() 
{ 
    var xmlhttp; 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    var obj = JSON.parse(xmlhttp.responseText); 
    select = document.getElementsByName('exericse'); 
    select.innerHTML = ""; 
    for (var i = 0, len = obj.length; i < len; i++) 
    { 
      var opt = document.createElement('option'); 
     opt.value = obj[i]; 
     opt.text = obj[i]; 
     select.appendChild(opt); 
    } 

    } 
} 
xmlhttp.open("POST","get_exercise_list.php",true); 
var e = document.getElementsByName("muscles"); 
var strUser = e.options[e.selectedIndex].text; 
xmlhttp.send('muscle=' + escape(strUser)); 

} 
    </script> 

:이 실제로 자바 스크립트

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<link rel="stylesheet" type="text/css" href="styles.css" /> 

<script src="build_workout_functions.js"></script> 


</head> 

<body id="login-bg"> 

<div class="workout_table"> 

<select name="days"> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    <option value="C">C</option> 
    <option value="D">D</option> 
    <option value="E">E</option> 
    <option value="F">F</option> 
</select> 

<select name="muscles" onchange="getExercies()"> 
    <option value="legs">legs</option> 
    <option value="back">back</option> 
    <option value="chest">chest</option> 
</select> 

<select name="exericse"><select> 

</div> 

</body> 
</html> 
+0

대신 onchange를 사용하십시오. –

+0

'xmlhttp.onreadystatechange = function()'? '{...} '이 없습니다. –

답변

2

자바 스크립트에 너무 많은 오류가있어 어디서부터 시작해야할지 모르겠다. 우선, 많은 구문 오류가 있습니다. 당신은을 onreadystatechange 함수에 괄호를 놓치고 : 게다가

xmlhttp.onreadystatechange=function() { 
    ... 
} 

, document.getElementsByName()는 NodeList를, 아니 하나의 요소, e.selectedIndex이기 때문에 그렇게

var e = document.getElementsByName("muscles"); 
var strUser = e.options[e.selectedIndex].text; 

오류가 발생을 반환 정의되지 않았습니다. e [0] .selectedIndexe [0] .options을 사용해야합니다.

+0

select 요소에 대한 참조는 누구에게 제공됩니까? 나는 "근육"이라는 이름을 설정 했으므로 getElementsByName으로 그를 찾아야합니까? – dasdasd

+0

e [0] .selectedIndex 및 e [0] .options에 고정되어 작동합니다. 감사합니다! – dasdasd

0

경우 파일을 삭제하려면 <script></script> 태그를 제거해야하며 HTML에서만 필요합니다.

function getExercies() 
{ 
    var xmlhttp; 

    xmlhttp=new XMLHttpRequest(); 

    xmlhttp.onreadystatechange = function() { 

     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

      var obj = JSON.parse(xmlhttp.responseText); 

      select = document.getElementsByName('exericse'); 

      select.innerHTML = ""; 

      for (var i = 0, len = obj.length; i < len; i++) { 
       var opt = document.createElement('option'); 
       opt.value = obj[i]; 
       opt.text = obj[i]; 
       select.appendChild(opt); 
      } 

     } 
    } 

    xmlhttp.open("POST","get_exercise_list.php",true); 

    var e = document.getElementsByName("muscles"); 
    var strUser = e.options[e.selectedIndex].text; 

    xmlhttp.send('muscle=' + escape(strUser)); 

} 
+0

구문 오류가 있습니다. –

+0

맞아, 조금 개선되었습니다;) – Koen

관련 문제