为什么';匿名函数在Javascript中是否适用于我?
我是Javascript新手,我正在尝试让这个函数工作,但无论我做什么,当我切换到正常的函数时,我都无法让匿名函数工作。我知道我可以不使用匿名函数,但这真的让我很恼火 例如: 在HTML文件中:为什么';匿名函数在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"> <
<!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示例:对不起,我确实定义了它,但我忘了在这里写它。对不起,我确实定义了它,但我忘了在这里写它