我是java-script的新手,我正在尝试让这个功能起作用,但是我做什么我不能让匿名函数工作,当我切换到正常功能时它工作。我知道我可以没有匿名功能,但它真的很烦我。 例: 在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>
在JavaScript文件中:
var s_link = document.getElementById("search_link");
s_link.onclick = function() {
var is_sure = window.confirm("Are you sure you want to leave?");
if (!is_sure) {
window.alert("OK. You can stay here.");
return false;
}
};
感谢
答案 0 :(得分:3)
这里有几个问题,每个问题都会导致此脚本失败:
答案 1 :(得分:0)
脚本运行时,标识search_link
的链接不存在,因此无法使用getElementById或类似内容获取该链接。您需要延迟代码的执行(例如,将其包装在执行onload
的函数中,或者仅在解析链接之后将<script>
元素移动到{</body>
之前推荐)。
答案 2 :(得分:0)
建议:请务必将代码放在</body>
之前的页面末尾。
答案 3 :(得分:0)
您应该告诉您的脚本在页面加载后执行。为此,只需将代码包装如下:
window.onload = function() {
// code you had before
}
原因很简单。该脚本当前正在加载页面之前执行。因此, document.getElementById()请求实际上是失败的。它与你的匿名功能无关。
答案 4 :(得分:0)
就像Dorward先生指出的那样,你的脚本(在ch10_2.js)是在de DOM准备好之前执行的。 问题是,要将一个事件附加到一个元素上,所述元素必须存在,但是当javascript代码一加载就执行,页面的其余部分通常仍在加载。因此,您要附加事件的元素尚不存在。
我推荐这篇关于jQuery(javascript库)如何处理这篇文章的文章:http://www.learningjquery.com/2006/09/introducing-document-ready。
这是一个非常简单的例子:http://jsbin.com/eziwu5/edit