我可以将脚本放在网页的底部,但是从顶部调用它吗?

时间:2010-11-25 12:38:39

标签: javascript html javascript-events

这会导致潜在的问题:

  <HTML>
    <BODY>
      ...
      <INPUT name="xyz" onchange="myFunction();">
      ...
     <SCRIPT>
        function myFunction()
        {
          ...
        }
      </SCRIPT>
    </BODY>
  </HTML>

如果页面加载缓慢并且表单在底部的脚本部分加载之前呈现,会发生什么?如果用户在INPUT框中输入一些文本,会发生JavaScript错误吗?

4 个答案:

答案 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中定义。如果脚本位于底部,则需要在使用前加载。