2012-01-21 4 views
3

JavaScriptの聖書を完成させようとしていて、スクリプトを機能させるのに問題があります。JavaScript関数を呼び出すときにエラーが発生しました - 「変数が見つかりません」

割り当ては、ユーザーが惑星の名前を照会することを可能にするページを作成することであり、惑星の名前とその関連アレイに記憶されたデータとを照合するスクリプトを介して距離情報および直径情報を呼び出す。

ボタン(onclick = 'getPlanetInfo()')を使用して、関数 'getPlanetInfo'を呼び出そうとしています。しかし、私のエラーコンソールは、実行しようとすると、 'getPlanetInfo'という名前の変数を見つけることができないと報告しています。

下記のJSコードとHTMLコードの両方を添付しました。なぜ私の機能が適切に呼び出されていないのかについてのどんな考えも大いに評価されるでしょう。

HTML:

<!DOCTYPE html> 
<html> 
<head> 
    ... 
    <script type="text/javascript" src="planets.js"></script> 
</head> 
<body> 
     <h1>Check a planet's distance from the sun and its diameter!</h1> 
     <form> 
      <input type="text" name="entry" id="entry"> 
      <input type="button" value="Check it!" onClick="getPlanetInfo()"> 
     </form> 
</body> 
</html> 

JS:

var planetNames = new Array(4); 
planetNames[0] = "Mercury"; 
planetNames[1] = "Venus"; 
planetNames[2] = "Earth"; 
planetNames[3] = "Mars"; 

var planetDistances = new Array(4); 
planetDistances[0] = "36 million miles"; 
planetDistances[1] = "67 million miles"; 
planetDistances[2] = "93 million miles"; 
planetDistances[3] = "141 million miles"; 

var planetDiameters = new Array(4); 
planetDiameters[0] = "3,100 miles"; 
planetDiameters[1] = "7,700 miles"; 
planetDiameters[2] = "7,920 miles"; 
planetDiameters[3] = "4,200 miles"; 

function getPlanetInfo() 
{ 
var selectedPlanet = document.getElementById("entry").value; 
for (var i = 0; i < planetNames.length; i++) 
{ 
    if (planetNames[i] == selectedPlanet) 
    { 
     break; 
    } 
} 

if (i < planetNames.length) 
{ 
    alert(selectedPlanet + " is " + planetDistances[i] " in distance from the Sun and " + planetDiameters[i] + "in diameter.") 
} 

else 
{ 
    alert("Sorry, " + selectedPlanet + " isn't in the database."); 
} 
} 
+0

私は上記のコードを適切にインデントしても構いません。それは実際のファイルに適切にインデントされていることを保証します。 ;) – cole

+1

jsbeautifierにコードをペースト&コピーするのにかかる瞬間、人々はあなたを助けてくれるでしょう。 – ThiefMaster

+2

@FourSix - 読めるようにすることができないのであれば、なぜそれを読むのに迷惑をかけるべきですか? –

答えて

1

このライン:

alert(selectedPlanet + " is " + planetDistances[i] " in distance from the Sun and " + planetDiameters[i] + "in diameter.") 

は後+記号が欠落しているので、この関数は、構文エラーがあり、作成されていない、と呼ばれたときに自然にそれが見つからないです。

http://www.jsfiddle.netは皆さんが再現可能なケースを作成し、jsの質問をする必要がある場合に使用するのに役立ちます。

+0

これと、チップ、マルセロをつかまえてくれてありがとう。 – cole

0

あなたは+が不足している - この:

alert(selectedPlanet + " is " + planetDistances[i] " in distance from the Sun and " + planetDiameters[i] + "in diameter.") 

があるべき

alert(selectedPlanet + " is " + planetDistances[i] + " in distance from the Sun and " + planetDiameters[i] + "in diameter.") 

スクリプトを読み込むときに構文エラーを検出するには、Firebugのようなものを使用する必要があります。

+0

ありがとう、James。とても有難い。 – cole

関連する問題