Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript and Anchor Tags, Best Practice?

Quick Question.

Should we put Javascript in the HREF or use onClick (event)?

Are there any pros/cons to using either one. Personally I think it's easier/cleaner to simply put code in the href, and not have to return false or worry about jumping to #

Are there any known browser specific issues with each method...

Examples:

<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>
like image 438
Weston Watson Avatar asked Jul 22 '11 14:07

Weston Watson


3 Answers

1) Rather use onclick. Be sure to have a rational fallback URL in href when JS is not allowed.

2) Rather than onclick="...", you should use event handler. Find elements using jQuery or XPath, and then for each, call element.addEventListener().

element.addEventListener("click", function() { alert("bar"); }, false);

Or the old way...

element.onclick = function() { alert("foo"); };
like image 118
Ondra Žižka Avatar answered Sep 28 '22 21:09

Ondra Žižka


Keeping the code separate from the html is cleaner IMO.

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

Then in head or separate js file:

document.getElementByID("foo").onclick = function() { alert("hi"); }
like image 38
JohnKlehm Avatar answered Sep 28 '22 21:09

JohnKlehm


I would personally not put the JavaScript code in the HTML. You should use an event listener that will get triggered when the <a> is clicked on.

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

And then:

document.getElementById('linkA').addEventListener('click', function(e){
    e.preventDefault(); // Prevents page from scrolling to the top
    alert('foo!');
});
like image 4
Rocket Hazmat Avatar answered Sep 28 '22 20:09

Rocket Hazmat