繁体   English   中英

为什么不调用我的函数?

[英]Why isn't my function being called?

我只是在做一些简单的JavaScript作业,但我无法弄清楚为什么我的函数没有被调用。

我现在所有的te功能都是alert("test") ,因为我必须确保在实际编写它之前调用该函数。 JS文件DOMassignment_3_ext.js与HTML文件位于同一文件夹中。

HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM Assignment: #3</title>
<script src="DOMassignment_3_ext.js">
</script>
</head>
<body>
<h2>Christmas Mad Libs</h2>
<form name="words">
    <table>
        <tr>
            <td>Name</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>Body-part</td>
            <td><input type="text" name="body"></td>
        </tr>
        <tr>
            <td>Animal</td>
            <td><input type="text" name="animal"></td>
        </tr>
    </table>
    <input type="button" onlick="madlibs(name, body, animal)" value="Submit">
</form>
<p>
<b class="name"></b> the Red-<b class="body"></b> <b class="animal"></b><br>
Had a very shiny <b class="body"></b><br>
And if you ever saw it<br>
You would even say it glows<br>
And all of the other <b class="animal"></b><br>
Used to laugh and call him names<br>
They never let poor <b class="name"></b><br>
Join in any <b class="animal"></b> games<br>
</p>
</body>
</html>

JS:

function madlibs(name, body, animal){
  alert("test");
}
<input type="button" onlick="madlibs(name, body, animal)" value="Submit">

应该:

<input type="button" onclick="madlibs(name, body, animal)" value="Submit">

问题是你传递的是不存在的变量! name确实(总会有一个全局变量name ,但是bodyanimal不会。因此,当你调用这个函数时:

onlick="madlibs(name, body, animal)"
onclick="madlibs(name, body, animal)" // and even when you spell it correctly

Javascript会说“ body ?我不知道什么叫body !” 然后它将抛出一个错误(准确地说是ReferenceError )并停止运行代码。 这意味着不会调用madlibs

在您定义这些变量之前,您可以简单地将它们排除在调用之外:

onclick="madlibs()"

(实际上,学习如何使用Javascript附加事件处理程序会更好,但这是另一回事。)


再看一下,这些变量可能是在DOMassignment_3_ext.js中定义的,但考虑到文件的名称,似乎不太可能......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM