2017-08-14 9 views
1

私は初心者のプログラマーです。私はこの作業をしたいのですが、それはしません。私を助けて間違ったことを説明できますか?たとえば、私が20歳以下に入ると、私が選んだどんな惑星にでも歩くのにどれくらいの時間がかかるのか教えてください。そのほとんどは、ユーザーが選択したオプションをコードストアに格納し、それを年齢に適用してデータを計算するために使用する方法を把握しています。ありがとうございました!どのようにhtmlとjavascriptを使用して電卓のようなものを作るのですか?

<legend>basic info</legend> 
    <p> What is your destination? 
     <select onchange = "selectDestination(this.value)"> 
     <option value="mercury">Mercury</option> 
     <option value="venus">Venus</option> 
     <option value="mars">Mars</option> 
     <option value="jupiter">Jupiter</option> 
     <option value="saturn">Saturn</option> 
     <option value="uranus">Uranus</option> 
     <option value="neptune">Neptune</option> 
     <option value="pluto">Pluto</option> 
     </select> 
     <script type="text/javascript"> 
      var planets = new Array(); 
     planets['mercury'] = 48000000; 
     planets['venus']=25000000 
     planets['mars']=25000000 
     planets['jupiter']=33900000 
     planets['saturn']=365000000 
     planets['uranus']=1200000000 
     planets['neptune']=2600000000 
     planets['pluto']=2800000000 

     function selectDestination(selectedValue) { 
     window.alert(selectedValue + " distance=" + planets[selectedValue]); 
     }   
     </script> 
    </p> 
    <p> 
    <label>how old are you?</label> 
    <form id="form" onsubmit="return false;"> 
     <input type="number" id="userInput"> 
     <input type="submit" onclick="age()"> 
    </form> 
    <script type="text/javascript"> 
     function age() 
     { 
     var input = document.getElementById("userInput"); 
     alert(input); 
     } 
     if(age<20); 
     { 
     alert("YOU ARE UNDER 20"); 
     var runSpeed=6.3; 
     var walkSpeed=2.1 
     var water = 1.5; 
     var calories = 2500; 
     var runTime = planets[selectedValue]/runSpeed; 
     var runDays = runTime/24 
     document.write("it will take "+runTime+" hours and "+runDays+" days to make it to"+selectedValue); 
     } 
     if(21<age>45) { 
     alert("YOU ARE AT YOUR PHYSICAL PEAK"); 
     var runSpeed=8.3; 
     var walkSpeed=3.1; 
     var water = 2; 
     var calories = 3000; 
     var runTime = planets[selectedValue]/runSpeed; 
     var runDays = runTime/24; 
     document.write("it will take "+runTime"hours and"+runDays+"days to make it to"+selectedValue); 
     } 
     if(age<45){ 
     alert("YOU ARE PROBABLY TOO OLD TO TAKE THIS TRIP"); 
     var runSpeed=5.3; 
     var walkSpeed=1.1; 
     var water=1.5; 
     var calories=3000; 
     var runTime = planets[selectedValue]/runSpeed; 
     var rundays = planets[selectedValue]/24; 
     document.write("it will take "+runTime"hours and"+runDays+"days to make it to"+selectedValue); 
     } 
    </script> 
    </p> 
+2

コードには多くの問題があります。まず、 ')'括弧がありません。コードをデバッグして見つけてください。第2に、あなたの年齢計算 'if(21 < age > 45)'が動かない - それを2つの異なる条件に分けるか、 'if(age> 21 && age <45)'と書く必要があります。あなたはおそらく**あなたの惑星のための**連想配列**または**オブジェクト**を探しています。 –

答えて

3

このコードはここでは機能しません。

 var planets = new Array(); 
    planets['mercury'] = 48000000; 
    planets['venus']=25000000 
    planets['mars']=25000000 
    planets['jupiter']=33900000 
    planets['saturn']=365000000 
    planets['uranus']=1200000000 
    planets['neptune']=2600000000 
    planets['pluto']=2800000000 

あなたが宣言しているものは、配列であり、それらにプッシュしたいものはオブジェクトです。あなたは理想的な惑星が見えるようにしたいどのような

は今var planets = [ {planet: 'mercury', distance: 48000000}, {planet: 'venus', distance: 25000000 }, ... ]

であるあなたの構文はmercuryまたはvenusのキーを持つオブジェクトを探していて、何かを見つけていないので、何も起こりません。

あなたがすべきことは、ユーザが年齢として入力したものであればconsole.log()にできることです。あなたの関数age()がパラメータを受け入れていることを確認してください。age(val)

console.log()は、ユーザーの入力年齢を記録するときれいに近いはずです。それ以降は、ユーザーが選択した惑星をつかむだけで済みます。planets配列をループし、ユーザーが選択したものを配列内のものと突き合わせることで、行えます。 planets.filter(planet => planet.indexOf(planetUserSelected) !== -1)のようなものは、あなたが探しているオブジェクトを返すでしょう。あなたはその値をconsole.log()にしてそこから行くことができます。

関連する問題