<script language="JavaScript">
<!--
/*[(캐릭터의 총 INT + 베이스 레벨) ÷ 8] × (스킬레벨 × 8 + 4)*/
Int = 120;
Lv = 99;
skill = 10;
document.write(Math.floor((Int + Lv) / 8 * (skill * 8 + 4)));
//
function view(){
Char_int = document.formula.char_int.value;
Char_Lv = document.formula.char_Lv.value;
Skill_Lv = document.formula.skill_Lv.value;
total_value = Math.floor(((Char_int + Char_Lv) / 8 * (Skill_Lv * 8 + 4)));
//total_value = "당신의 인트는 " + Char_int + "n당신의 레벨은 " + Char_Lv + "n당신의 힐레벨은 " + Skill_Lv + "n당신의 총 힐량은 " + (((Char_int+Char_Lv)/8)*(Skill_Lv*8+4)) + "입니다.";
document.formula.Value.value = total_value;
}
//-->
</script>
<form name="formula">
<input type="text" name="char_int" size="5"> <input type="text" name="char_Lv" size="5"> <input type="text" name="skill_Lv" size="5"><br>
<input type="button" value="공식 구하기" OnClick="view()"><br>
<textarea name="Value" rows="4" cols="50" readonly>
위쪽의 문서출력과는 별도로
폼에서 입력받으면 출력되는 쪽은... 값이 전혀 다르군요.
머리가 안돌아가서 지금 해결책을 못찾고 있습니다.[...]
해결책을 아신다면 도움을 부탁드리고...
ps. 자바스크립트나 자바 쪽을 잘 아시는 분은 원하신다면 제 엠에센 주소를 알려드립니다.
(이유 : 많이 물어보려고!)
그럼 -_-)> 부탁드립니다.
자바스크립트에서 데이터 타입 체크가 느슨하게 되어있습니다. 즉 하나의 변수에 문자열이나 char, int, double같은 값을 마음대로 넣을 수 있고, 다른 타입으로 변환 시킬 수 있습니다. 이러한 느슨한 데이터 타입 체크가, 간편하기는 하지만, 작성자가 원치 않는 값이 나올수 있는 위험성도 있습니다.
form내에에서는 value들은 자바스크립트에서 읽어올때 특별히 지정하지 않는 이상 "문자열"로 읽어 옵니다.
Char_int + Char_Lv 는 결국 두개의 다른 문자열(그 내용이 숫자라 할지라도)을 더해 새로운 문자열을 만드는 구문입니다. 그리고 다음 연산인 / 를 만나면서 이 문자열은 자동으로 int로 형 변환이 일어나고 나머지 연산이 되기 때문에 원치 않는 값이 나오는 겁니다.
parseInt() 함수를 이용해서, 폼 value를 int로 변환 시켜주시면 원하는 값이 나올 겁니다.
그럼 이만 흐늘 흐늘 ~( -_)~