2015-02-02 1 views
0

최근에 저는 HTML과 함께 JavaScript를 배우기 시작했습니다. 나는 사용하고있는 게임을위한 간단한 계산기를 만들고 싶었다. 당신은 광석의 유형, 소행성에 남겨진 광석의 양, 각주기를 채굴 한 값 및 한주기의 기간을 선택합니다. 스크립트는 채굴 할 광석의 양과 필요한 사이클 수를 반환해야합니다. 총 지속 시간만큼.JavaScript가 어떤 값도 출력하지 않습니다.

try 문에서 함수를 묶는 것과 같은 여러 가지 시도를했지만 그 중 하나가 작동하지 않았습니다. 내가 뭘 잘못하고 올바른 방법으로 나를 가리 키려고 귀하의 도움을 요청합니다. 미리 감사드립니다.

<html> 
<head> 
    <title>Mining Calculator - IndX: Industry Extension</title> 
    <script type="text/javascript">  
     function oreCalc() { 
     var ore = document.getElementById("ores").value; 
     var volume; 
     var amount = document.getElementById("amnt").value; 
     var yield = document.getElementById("yield").value; 
     var cycle = document.getElementById("cycle").value; 
     try{ 
      switch(ore){ 
       case "veldspar": 
        volume = 0.1; 
        break; 
       case "scordite": 
        volume = 0.15; 
        break; 
       case "pyroxeres": 
        volume = 0.3; 
        break; 
       case "plagioclase": 
        volume = 0.35; 
        break; 
       case "omber": 
        volume = 0.6; 
        break; 
       case "kernite": 
        volume = 1.2; 
        break; 
       case "jaspet": 
        volume = 2; 
        break; 
       case "hemorphite": 
        volume = 3; 
        break; 
       case "gneiss": 
        volume = 5; 
        break; 
       case "dark_ochre": 
        volume = 8; 
        break; 
       case "spodumain": 
        volume = 16; 
        break; 
       case "crokite": 
        volume = 16; 
        break; 
       case "arkonor": 
        volume = 16; 
        break; 
       case "mercoxit": 
        volume = 40; 
        break; 
      } 
      var rockvolume = amount * volume; 
      var cycles = rockvolume/yield; 
      var seconds = cycles * cycle; 
      var minutes; 
      while(seconds > 60) 
      { 
       seconds -= 60; 
       minutes++; 
      } 
      var text = "The asteroid has " + rockvolume + " m3 of ore. \n You'll mine it in " + Math.ceil(cycles) + 
      " cycles. \n It will take you " + minutes + "min " + Math.ceil(seconds) "s to mine."; 
      document.getElementById("output").innerHTML = text; 
      } 
      catch(err){ 
       var text = "Input all required fields"; 
       document.getElementById("output").innerHTML = text; 
      } 
     } 
    </script> 
</head> 
<body> 
    <table><tr><td>Ore:</td><td> 
     <select name="ores" id="ores" onchange="oreCalc()"> 
      <option value="veldspar">Veldspar</option> 
      <option value="scordite">Scordite</option> 
      <option value="pyroxeres">Pyroxeres</option> 
      <option value="plagioclase">Plagioclase</option> 
      <option value="omber">Omber</option> 
      <option value="kernite">Kernite</option> 
      <option value="jaspet">Jaspet</option> 
      <option value="hemorphite">Hemorphite</option> 
      <option value="gneiss">Gneiss</option> 
      <option value="dark_ochre">Dark Ochre</option> 
      <option value="spodumain">Spodumain</option> 
      <option value="crokite">Crokite</option> 
      <option value="arkonor">Arkonor</option> 
      <option value="mercoxit">Mercoxit</option> 
     </select></td><td rowspan="4"><p id="output"></p></td></tr> 
     <tr><td>Amount:</td><td> 
      <input type="number" name="amount" id="amnt" oninput="oreCalc()"> 
     </td></tr> 
     <tr><td>Yield:</td><td> 
      <input type="number" name="yield" id="yield" oninput="oreCalc()"> 
     </td></tr> 
     <tr><td>Cycle duration:</td><td><input type="number" name="cycle" id="cycle" oninput="oreCalc()"></td></tr> 
    </table> 
</body> 
</html> 
+2

jsFiddle을 만들고 거기에 코드를 복사하면 디버깅 할 수있어서 정말 도움이 될 것입니다. – gwin003

+1

JavaScript에 구문 오류가 있습니다. 'Math.ceil (초)은 내 것이 야. "는'Math.ceil (초) + 광산 '이어야합니다." –

+0

@ Gwin003 http://jsfiddle.net/#&togetherjs=6B8FkPihMg –

답변

0

이러한 종류의 문제를 추적하려면 브라우저의 오류 콘솔을 사용해야합니다.

  • 파이어 폭스에서는이 메뉴의 -> 개발 - 크롬에서> 웹 콘솔
  • 이 메뉴의 -> 더 많은 도구 -> 자바 스크립트 콘솔 IE에서
  • 난 당신이 F12 클릭 콘솔 명중 생각합니다.

나는 파이어 폭스를 사용하고 있는데 내가 페이지에 다음과 같은 오류 참조 : 당신은 라인 (66)의 주위에 가면

SyntaxError: missing ; before statement  ore.html:66 

을 그리고 당신은 볼 수 있습니다 :

var text = "The asteroid has " + rockvolume + " m3 of ore. \n You'll mine it in " + Math.ceil(cycles) + 
 
      " cycles. \n It will take you " + minutes + "min " + Math.ceil(seconds) "s to mine.";

Math.ceil (초) 이후에 "+"가 누락되었지만 "광산으로 넘어 가기"전에주의하십시오. 더하기 기호를 추가하면 이제 작동합니다.

Btw, Javascript 용 외부 파일을 사용하는 것이 좋습니다. 문제를 관리하고 추적하는 것이 훨씬 쉬워졌습니다.

관련 문제