代码之家  ›  专栏  ›  技术社区  ›  Tony the Pony

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

  •  2
  • Tony the Pony  · 技术社区  · 14 年前

    这是否会导致潜在问题:

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

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

    4 回复  |  直到 14 年前
        1
  •  3
  •   Keith Rousseau    14 年前

    您需要先加载脚本,然后才能调用它。你为什么不把它改成这样:

    <input name="xyz" id="myInput">
          ...
         <script>
            function myFunction
            {
              ...
            }
    
            window.onload = function() {
                var myInput = document.getElementById('myInput');
                myInput.onchange = myFunction;
            }
          </script>
    

    这种方法允许您将标记和脚本分离,并将所有js放在一个地方。

        2
  •  1
  •   Shawn    14 年前

    多年来,JavaScript的开发已经发生了变化。

    不仅你最初的问题正在被辩论,而且回到你最初问题的主题,你的方法论本身也是如此。

    我强烈建议阅读这篇关于一些JavaScript最佳实践的短文: http://www.catswhocode.com/blog/best-practices-for-modern-javascript-development .

        3
  •  1
  •   alex    14 年前

    它可以工作,但是如果您加载了更多的HTML,并且浏览器在最后解析JavaScript花费了更长的时间,那么这可能是一个问题。在这种情况下,你的函数不会被定义,你会得到。。。

    myFunction()未定义

    注意您需要添加左括号和右括号( ( &安培; ) )之后 myFunction .

    当函数声明被提升时,它们只被提升到其包含的脚本块中。

    另外,您应该真正使用小写标记,它不再是1998:)并且doctype也有帮助,最后,您应该尝试从内联属性中删除事件处理程序。

        4
  •  0
  •   m.edmondson    14 年前

    脚本在执行之前需要在DOM中定义。如果脚本位于底部,则需要在使用前加载它。

    推荐文章