为什么';匿名函数在Javascript中是否适用于我?

为什么';匿名函数在Javascript中是否适用于我?,javascript,dom-events,anonymous-function,Javascript,Dom Events,Anonymous Function,我是Javascript新手,我正在尝试让这个函数工作,但无论我做什么,当我切换到正常的函数时,我都无法让匿名函数工作。我知道我可以不使用匿名函数,但这真的让我很恼火 例如: 在HTML文件中: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <

我是Javascript新手,我正在尝试让这个函数工作,但无论我做什么,当我切换到正常的函数时,我都无法让匿名函数工作。我知道我可以不使用匿名函数,但这真的让我很恼火

例如:

在HTML文件中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<script type="text/javascript" src="ch10_2.js"> </script>
<body>
<a href="http://www.google.com" id="search_link">Go Searching</a> 
</body>
</html>

脚本运行时,id为
search\u link
的链接不存在,因此无法使用getElementById或类似工具获取该链接。您需要延迟代码的执行(例如,将其包装在执行
onload
的函数中,或者在解析链接后(通常建议在
之前)将
元素移动到)(通常建议在
之前使用)。

建议:确保将您的代码放在页面末尾,就在


建议:确保在

之前将您的代码放在页面的末尾。这里有几个问题,每个问题都会导致此脚本失败:

  • 脚本标记在文档中是非法位置-在和标记之间。它必须位于其中一个标记内
  • 脚本尝试访问名为“s_link”的变量,该变量应指向该链接。要使其引用该链接,您需要使用getElementById()或其他DOM遍历方法来获取元素[编辑-我看到您在发布问题后添加了该行]
  • 如果脚本在呈现元素(链接)之前运行(现在是这样),则不会影响元素,因为它在文档中尚不存在。请将其包装到在文档加载时运行的函数中,或者将脚本放在文档中元素之后

    • 这里有几个问题,每个问题都会导致此脚本失败:

      • 脚本标记在文档中是非法位置-在和标记之间。它必须位于其中一个标记内
      • 脚本尝试访问名为“s_link”的变量,该变量应指向该链接。要使其引用该链接,您需要使用getElementById()或其他DOM遍历方法来获取元素[编辑-我看到您在发布问题后添加了该行]
      • 如果脚本在呈现元素(链接)之前运行(现在是这样),则不会影响元素,因为它在文档中尚不存在。请将其包装到在文档加载时运行的函数中,或者将脚本放在文档中元素之后

      您应该告诉脚本在页面加载后执行。要执行此操作,只需包装代码,如下所示:

      window.onload = function() { 
          // code you had before
      }
      

      原因很简单。当前正在加载页面之前执行脚本。因此document.getElementById()请求实际上失败了。这与您的匿名函数无关。

      您应该告诉脚本在加载页面后执行。要执行此操作,只需按如下所示包装代码:

      window.onload = function() { 
          // code you had before
      }
      

      原因很简单。脚本当前正在加载页面之前执行。因此,document.getElementById()请求实际上失败了。这与您的匿名函数无关。

      正如Dorward先生指出的,您的脚本(位于ch10_2.js)是在de DOM准备就绪之前执行的。 问题是,要将事件附加到元素,所述元素必须存在,但当加载javascript代码后,页面的其余部分通常仍在加载。因此,要将事件附加到的元素还不存在

      我推荐这篇关于jQuery(一个javascript库)如何处理这个问题的文章:


      这里有一个非常简单的jsbin示例:

      正如Dorward先生所指出的,您的脚本(位于ch10_2.js)是在de DOM就绪之前执行的。 问题是,要将事件附加到元素,所述元素必须存在,但当加载javascript代码后,页面的其余部分通常仍在加载。因此,要将事件附加到的元素还不存在

      我推荐这篇关于jQuery(一个javascript库)如何处理这个问题的文章:


      这里有一个非常简单的jsbin示例:

      对不起,我确实定义了它,但我忘了在这里写它。对不起,我确实定义了它,但我忘了在这里写它