2012-01-21 79 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

非常感謝Marcelo,感謝您的支持。 – 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

謝謝,詹姆斯。非常感激。 – cole

相關問題