2013-02-07 3 views
0

알림 창에 나에게 잘못된 메시지가 표시됩니다. 고맙습니다
왜이 간단한 자바 스크립트 프로그램이 작동하지 않습니까?

var weight = parseFloat(document.BMI.weight.value) 
var height = parseFloat(document.BMI.height.value) 

function calcBMI() { 
var answer = weight * 703/(height*height) 
return answer; 
    } 
    </script> 


<form action="" name="BMI"> 
<input type="text" name="weight" /> 
<input type="text" name="height" /> 
<input type="submit" onclick="alert(calcBMI())" /> 
</form> 

답변

2
<script type="text/javascript"> 
function calcBMI() { 
var weight = parseFloat(document.BMI.weight.value) 
var height = parseFloat(document.BMI.height.value) 
var answer = weight * 703/(height*height) 
return answer; 
    } 
    </script> 


<form action="" name="BMI"> 
<input type="text" name="weight" /> 
<input type="text" name="height" /> 
<input type="submit" onclick="alert(calcBMI())" /> 
</form> 

잘하면 지금 작동하는 모든 도움을 :)

+0

감사합니다 .--) 함수를 사용할 때 함수 내부에서 선언되지 않은 경우 함수 외부의 변수에 액세스 할 수 없습니다. ... 그게 맞습니까? –

+0

예. DOM은 위에서 아래로 구문 분석합니다. DOM이 변수를 'undefined'로 만나고'calcBMI'를 호출하면 런타임에 그 시점에서 텍스트 상자에있는 값을 알 수 없습니다. 그 경우 귀하의 솔루션은 친절하게 대답으로 표시합니다. – asifsid88

+0

변수가 함수 외부에서 선언 된 경우 함수 내에서 변수를 계속 사용할 수 있습니다. 그러나 문제는 텍스트 필드가 아직 존재하지 않는 변수가 너무 빨리 설정된다는 점입니다. 따라서 함수가 실행되면 변수에 이미 나쁜 값이 저장되어 있습니다. 그의 예제는 비트를 만든 다음 변수가 올바른 시간에 값을 가져온 다음 함수가 호출되고 텍스트 상자가 렌더링 된 후에 값을 가져옵니다. –

0

당신은 당신의 함수 호출로 변수를 이동해야합니다. * 편집 .. 나는 펀치에 맞았다.

<form action="" name="BMI"> 
    <input type="text" name="weight" /> 
    <input type="text" name="height" /> 
    <input type="submit" onclick="alert(calcBMI())" /> 
</form> 

<script type="text/javascript"> 

function calcBMI() { 
    var weight = parseFloat(document.BMI.weight.value) 
    var height = parseFloat(document.BMI.height.value) 
    var answer = weight * 703/(height*height) 
    console.log(weight); 
    return answer; 
} 
</script> 
0
function calcBMI() { 
    var weight = parseFloat(document.BMI.weight.value) 
var height = parseFloat(document.BMI.height.value) 
var answer = weight * 703/(height*height) 
return answer; 
    } 
    </script> 

지역 및 grobal 변수에 문제가 있습니다. 버튼을 클릭하는 동안 함수가 텍스트 상자에서 값을 가져 오지 않습니다.

관련 문제