调用JavaScript函数时出错 - “找不到变量”

时间:2012-01-21 23:35:27

标签: javascript

我正在尝试使用JavaScript圣经来完成和练习,并且无法让我的脚本运行。

该任务是创建一个页面,允许用户查询行星的名称,并通过与行星名称相匹配的脚本及其存储在关联数组中的数据,调用其距离和直径信息。

我试图通过一个按钮调用函数'getPlanetInfo'(onclick ='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.");
}
}

2 个答案:

答案 0 :(得分:1)

这一行:

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

+之后缺少planetDistances[i]符号,因此该函数存在语法错误而未创建,并且在调用时自然找不到。

http://www.jsfiddle.net可以帮助您创建一个我们都可以看到的可重现的案例,在您需要提出问题时使用它。

答案 1 :(得分: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这样的东西来捕获语法错误。