Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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_Anchor - Fatal编程技术网

Javascript 事件侦听器未在锚上工作

Javascript 事件侦听器未在锚上工作,javascript,anchor,Javascript,Anchor,这可能是一个非常愚蠢的问题,但我现在绝望了。我试图通过单击锚来执行javascript函数,如下所示: <head> <script type="text/javascript"> function myFunction() { alert('It was clicked'); } Anchor.addEventListener('click', myFunction, false); </script> </he

这可能是一个非常愚蠢的问题,但我现在绝望了。我试图通过单击锚来执行javascript函数,如下所示:

<head>
<script type="text/javascript">
    function myFunction() {
        alert('It was clicked');
    }
    Anchor.addEventListener('click', myFunction, false);
</script>
</head>
…
<a href="#" id="Anchor">Click me</a>

函数myFunction(){
警报(“它已被单击”);
}
Anchor.addEventListener('click',myFunction,false);
…
但它不起作用

但是,这样做很好:

<a href="javascript:myFunction()" id="Anchor">Click me</a>

即使这样:

<a href="#" onclick="myFunction()" id="Anchor">Click me</a>

正确的方法是什么?我做错了什么?A

额外信息:

我已经使用相同的方法设置了其他事件,但不知何故,锚是唯一不起作用的事件。例如:

<script type="text/javascript">
    function aFunction() {
        AnElement.style.display = 'none';
    }
    window.addEventListener('load', aFunction, false);
</script>

函数affunction(){
AnElement.style.display='none';
}
window.addEventListener('load',aFunction,false);

当窗口完成加载时,元素被完全隐藏起来。

仅仅因为您给标记一个id属性,如
id=“Anchor”
,并不意味着您可以像这样直接从javascript调用它:
Anchor.addEventListener('click',myFunction,false)

实际上,您必须在绑定事件之前找到元素

document.getElementById('Anchor').addEventListener('click', myFunction, false);

问题是您将脚本放在
标题
部分<执行脚本时,代码>锚定
不存在,因此您得到的
锚定未定义

尝试将脚本放在html定义之后的修改版本


函数myFunction(){
警报(“它已被单击”);
}
Anchor.addEventListener('click',myFunction,false);

您应该在pageload事件之后添加绑定,并使用getElementById

function myFunction() {
    alert('It was clicked');
}
window.onload = function () {
    document.getElementById('Anchor').addEventListener('click', myFunction, false);
}

事实上,你可以。ID被转换为全局变量。@Barmar,在某些地方。这不是一刀切的,当然不是一个好主意。请在答案中输入代码,而不仅仅是一个链接。谢谢,我没有意识到这一点。我以为符号是在加载文档后进行计算的。@arielnmz脚本在加载文档时遇到时会立即执行。这允许像
document.write()
这样的东西在文档中脚本出现的位置生成HTML。现在我可以明白为什么我的事件侦听器无法工作了,这要感谢Claudio,并且您的解决方案在
头部运行得非常好。非常感谢。
function myFunction() {
    alert('It was clicked');
}
window.onload = function () {
    document.getElementById('Anchor').addEventListener('click', myFunction, false);
}