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

Javascript和锚定标记,最佳实践?

Javascript和锚定标记,最佳实践?,javascript,html,Javascript,Html,快速提问 我们应该将Javascript放在HREF中还是使用onClick(事件) 使用其中一种方法有什么优点/缺点吗。就我个人而言,我认为简单地将代码放在href中更容易/更干净,而且不必返回false或担心跳转到# 每种方法是否存在已知的特定于浏览器的问题 示例: <a href="javascript: alert('foo!');">Click Me</a> <a href="#" onClick="alert('foo!');return false"&

快速提问

我们应该将Javascript放在HREF中还是使用onClick(事件)

使用其中一种方法有什么优点/缺点吗。就我个人而言,我认为简单地将代码放在href中更容易/更干净,而且不必返回false或担心跳转到#

每种方法是否存在已知的特定于浏览器的问题

示例:

<a href="javascript: alert('foo!');">Click Me</a>
<a href="#" onClick="alert('foo!');return false">Click Me</a>
<a href="javascript:void(0)" onclick="alert('foo!');">Click Me</a>

在onclick事件中(虽然是用JS而不是属性指定的),使用一个合理的href属性

通常,我会将JavaScript外部化,但使用
href
将其称为:

尽管我认为您的快速
警报
示例可以作为规则的例外

但是,如果您使用像jQuery这样的JS库,您当然可以直接分配事件——请参阅jQuery教程中的第一个示例,它查看锚元素,而不是使用onclick。当不允许JS时,请确保在
href
中有一个rational fallback URL

2) 您应该使用事件处理程序,而不是
onclick=“…”
。 使用jQuery或XPath查找元素,然后为每个元素调用
element.addEventListener()

还是老办法

element.onclick = function() { alert("foo"); };

在我看来,将代码与html分开是更干净的

<a id="foo" href="#">Click Me</a>

我个人不会将JavaScript代码放在HTML中。您应该使用一个事件监听器,当点击
时,该监听器将被触发

<a href="#" id="linkA">Click Me</a>

您应该将javascript代码外部化。收听.preventDefault方法上tagcool stuff的click事件。这通常被认为比在内联代码末尾返回false更好吗?@thesocalhacker:通常更喜欢这样做(使用事件处理程序,而不是内联代码)。您希望将JavaScript与HTML分开,所以是的,
e.preventDefault()是首选(与内联代码返回false相比)。
document.getElementByID("foo").onclick = function() { alert("hi"); }
<a href="#" id="linkA">Click Me</a>
document.getElementById('linkA').addEventListener('click', function(e){
    e.preventDefault(); // Prevents page from scrolling to the top
    alert('foo!');
});