这会导致潜在的问题:
<HTML> <BODY> ... <INPUT name="xyz" onchange="myFunction();"> ... <SCRIPT> function myFunction() { ... } </SCRIPT> </BODY> </HTML>
如果页面加载缓慢并且表单在底部的脚本部分加载之前呈现,会发生什么?如果用户在INPUT框中输入一些文本,会发生JavaScript错误吗?
答案 0 :(得分:3)
您需要先加载脚本才能调用它。你为什么不把它改成这样的东西:
<input name="xyz" id="myInput">
...
<script>
function myFunction
{
...
}
window.onload = function() {
var myInput = document.getElementById('myInput');
myInput.onchange = myFunction;
}
</script>
这种方法允许您将标记和脚本分开,并将所有js放在一个地方。
答案 1 :(得分:1)
虽然如果你加载了更多的HTML并且浏览器在最后解析你的JavaScript需要更长的时间,但它可能会有问题。在这种情况下,您的功能将无法定义,您将获得......
myFunction()未定义
请注意,您需要在(
之后添加开括号和右括号()
&amp; myFunction
)。
虽然函数声明已悬挂,但它们仅在其包含的脚本块中提升。
另外,你应该真的使用小写标签,它不再是1998了:)而且doctype也有帮助,最后,你应该尝试从内联属性中删除你的事件处理程序。
答案 2 :(得分:1)
多年来JavaScript开发已经发生了变化。
您的原始问题不仅要辩论,而且要回到原始问题的主题,您的方法本身也是如此。
我强烈建议您阅读以下有关JavaScript最佳做法的简短介绍: http://www.catswhocode.com/blog/best-practices-for-modern-javascript-development
答案 3 :(得分:0)
脚本需要在执行之前在DOM中定义。如果脚本位于底部,则需要在使用前加载。