Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内联Javascript是否比内部Javascript更受欢迎<;脚本></脚本>;标签_Javascript_Jquery_Html - Fatal编程技术网

内联Javascript是否比内部Javascript更受欢迎<;脚本></脚本>;标签

内联Javascript是否比内部Javascript更受欢迎<;脚本></脚本>;标签,javascript,jquery,html,Javascript,Jquery,Html,哪一个更具支持性或更适合使用,为什么 例如: html标记内的内联javascript,如下所示: <script type="text/javascript"> function doFunction() { alert("Hello World"); } </script> Html: 然后像这样调用该函数: <script type="text/javascript"> function doFunction(

哪一个更具支持性或更适合使用,为什么

例如:

html标记内的内联javascript,如下所示:

<script type="text/javascript">
   function doFunction()
    {
      alert("Hello World");
    }
</script>
Html:

然后像这样调用该函数:

<script type="text/javascript">
   function doFunction()
    {
      alert("Hello World");
    }
</script>

函数doFunction()
{
警报(“你好世界”);
}
或者像这样做(使用jquery):

html:

Jquery:

<script type="text/javascript">
   $(document).ready(function(){
      $("input[type='button']").click(function(){
          alert("Hello World");
      });
   });
</script>

$(文档).ready(函数(){
$(“输入[type='button'])。单击(函数(){
警报(“你好世界”);
});
});

请提供一些与答案相关的文章链接


谢谢。

最佳做法是将您的关注点分开。html应该显示显示,javascript应该使其成为动态的。话虽如此,我还是建议,如果要使用html,可以用一种简单的方法将其作为目标

<input id="btnClick" type="button" value="click" />
但总的来说,若您正在创建一个小型站点,那个么只有在您打算使用大量功能时才包括jQuery。如果只需要对
click
事件处理程序使用jQuery,那么最好使用PlanJavaScript(注意,jQuery中完成的任何操作都可以用javascript完成)


最佳做法是将您的关注点分开。html应该显示显示,javascript应该使其成为动态的。话虽如此,我还是建议,如果要使用html,可以用一种简单的方法将其作为目标

<input id="btnClick" type="button" value="click" />
但总的来说,若您正在创建一个小型站点,那个么只有在您打算使用大量功能时才包括jQuery。如果只需要对
click
事件处理程序使用jQuery,那么最好使用PlanJavaScript(注意,jQuery中完成的任何操作都可以用javascript完成)


为什么最好避免使用内联事件侦听器的一些原因:

  • 保持脚本逻辑与主题/gui层分离(如其他人所述)
  • 很难堆栈或命名空间内联事件侦听器。i、 e.对同一事件应用多个事件侦听器
  • 内联事件侦听器必须依赖全局命名空间中的变量,因此,如果不首先全局公开这些变量,则不可能为事件侦听器使用外部包装的局部范围。e、 g.您有一个查找/生成多个链接标记的循环,并且您希望应用一个click侦听器,该侦听器引用您在包装的局部范围中的变量。这不可能使用内联事件
  • 在旧浏览器中,内联事件侦听器过去更容易发生内存泄漏,这是因为内联代码和节点对象本身之间存在循环引用。我不知道现代用户代理是否仍然如此
  • 您无法控制捕获事件的时间,在大多数浏览器中,使用addEventListener可以在捕获阶段或气泡阶段之间进行选择
  • 由于标记中的内联事件侦听器是基于文本的(即不基于函数),因此无法将相同的代码应用于许多元素。相反,您必须复制文本,然后将其转换为每个元素的新事件侦听器,这会浪费资源
  • 当内联事件侦听器的元素被删除并重新附加到Dom中时,它们可能会有奇怪的行为。这不是我曾经尝试过的事情,但我会假设事件侦听器属性在重新插入dom时会重新计算,这将是不理想的,甚至可能会产生意外的结果
  • 使用标记中的内联事件监听器,在实现监听器之前,您无法对事件是否受支持进行功能测试。在使用正确分离的javascript时,您可以在应用侦听器或决定降级为回退之前检查
    if(typeof elm.ondblclick!=“undefined”){…}
    是否为真。显然,您可以将所有可能的侦听器作为标记的一部分来实现,但这可能会产生不期望的效果

  • 为什么最好避免使用内联事件侦听器的一些原因:

  • 保持脚本逻辑与主题/gui层分离(如其他人所述)
  • 很难堆栈或命名空间内联事件侦听器。i、 e.对同一事件应用多个事件侦听器
  • 内联事件侦听器必须依赖全局命名空间中的变量,因此,如果不首先全局公开这些变量,则不可能为事件侦听器使用外部包装的局部范围。e、 g.您有一个查找/生成多个链接标记的循环,并且您希望应用一个click侦听器,该侦听器引用您在包装的局部范围中的变量。这不可能使用内联事件
  • 在旧浏览器中,内联事件侦听器过去更容易发生内存泄漏,这是因为内联代码和节点对象本身之间存在循环引用。我不知道现代用户代理是否仍然如此
  • 您无法控制捕获事件的时间,在大多数浏览器中,使用addEventListener可以在捕获阶段或气泡阶段之间进行选择
  • 由于标记中的内联事件侦听器是基于文本的(即不基于函数),因此无法将相同的代码应用于许多元素。相反,您必须复制文本,然后将其转换为每个元素的新事件侦听器,这会浪费资源
  • 当内联事件侦听器的元素被删除并重新附加到Dom中时,它们可能会有奇怪的行为。这不是我曾经尝试过的事情,但我会假设事件侦听器属性在重新插入dom时会重新计算,这将是不理想的,甚至可能会产生意外的结果
  • 使用标记中的内联事件监听器,在实现监听器之前,您无法对事件是否受支持进行功能测试。在使用正确分隔的javascript时,您可以在应用侦听器之前检查
    if(typeof elm.ondblclick!=“undefined”){…}
    是否为true,或者