真诚道歉,如果已经涵盖了这一点。我一直在拖网StackOverflow一段时间,我找不到任何可以解决我的问题的东西。很多人都有这个错误,但他们似乎是从语法错误和类似的东西中衍生出来的。我(也不是JSLint)找不到任何这样的错误,所以我很难过。 以下代码(来自W3Schools页面)确实有效:
<p>Click the button to trigger a function that will output "Hello World" in a p element with id="demo".</p>
<button onclick="myFunction()">Click me</button>
<p id="demo"></p>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Hello World";
}
</script>
但是,我的代码不起作用:
<head>
<!--SNIP-->
<script language="text/javascript">
function iconclicked() {
alert("Yay!");
}
</script>
</head>
<body>
<div class="icon" id="misc" onclick="iconclicked()"></div>
</body>
这会产生“未捕获的ReferenceError:iconclicked未定义”错误。
但是,如果我错了,请纠正我,function iconclicked() {...}
是定义函数的东西,它显然存在。此外,将JScript移动到<body>
标记内并不能解决问题,无论脚本是在div之前还是之后。如果您要将div替换为另一个元素(按钮,图像,文本等)或以不同的方式调用该函数(例如通过onload),则代码不起作用。
我想也许是我页面上剩下的代码会导致一些有趣的事情发生,所以我转向JSFIDDLE并在那里弹出旧的W3Schools代码。瞧,“Uncaught ReferenceError: myFunction is not defined
”。 JSFDDLE link
编辑:事实证明这只是因为我没有在JSFIDDLE选项中选择“无包装” - 感谢Peter Healy:)
但是如果你继续将JS <script>
</script>
标记放在JSFIDDLE的HTML部分中,那么就没有这样的问题,并且代码按预期工作。 JSFIDDLE link
我想也许这是一个范围问题,但我不能为我的生活弄清楚具体是什么。希望有更多经验的人有答案!
答案 0 :(得分:3)
没有&#34; text / javascript&#34;的语言,这就是类型。
更改
<script language="text/javascript">
到
<script>
不要担心语言或类型属性。语言已被弃用。
答案 1 :(得分:3)
实际上是<script type="text/javascript">
,type
属性,而不是language
:
<head>
<!--SNIP-->
<script type="text/javascript">
function iconclicked() {
alert("Yay!");
}
</script>
</head>
<body>
<div class="icon" id="misc" onclick="iconclicked()"></div>
</body>
language
属性不久前已经过时了。
答案 2 :(得分:0)