5

I am very new to javascript I know that you can add an onclick="" event to a html element... but is it possible in the javascript itself to declare that when someone clicks on x element an event is triggered?

3 Answers 3

5
<input id="myElement" type="button" value="Click me!" />
<script type="text/javascript">
    document.getElementById('myElement').onclick = function () {
        alert('Hello, world!');
    }
</script>

Make sure that you either run this after the element already exists (scripts at the bottom), or when the DOM is ready. (You could use window.onload for that, but you might just want to use jQuery from the beginning so that, among other things, you get a magical DOM-ready function. onload has some downsides, like waiting for images to load.)

Sign up to request clarification or add additional context in comments.

6 Comments

might want to add a note about the pre-conditions for when the script should run i.e. when the element exists in the DOM
Good catch - order switched, expanded.
+1 - there's a js-only domReady implementation here - books.google.com/… see Listing 5-12 :)
might also want to add in some code to ensure that a function assigned to onclick already is not overwritten by assigning a new event handler... perhaps take a look at Dean Edward's addEvent library? - dean.edwards.name/weblog/2005/10/add-event or a variation on it
I'll let the OP handle that if he really needs it - but thanks! :)
|
1

You would be best to leverage jQuery for this. It's easy to learn and easy to use.

http://api.jquery.com/click/

4 Comments

Unless the OP wants to do something complicated, I think jQuery would be overkill.
Jquery is definetly not overkill since it will take care of multi-browser issue for the most part
getElementById will not work the same in all browsers. For example, in IE8 it's case sensitive and in prior versions it's not W3C compliant and has all types of known issues. It's not just IE that's problematic however. There's logic in your statement about less is more, but jQuery is a layer that ensures compatibility across user agents and is well worth leveraging.
Unobtrusive JavaScript I agree, jQuery necessarily for this case only, I don't.
1

Quite possibly the best method is event listeners

<button id="x">click on me</button>
<script src="main.js">
    const button = 
    document.getElementById("x");
       
    button.addEventListener("click" () => {
    alert("hello world")
})
    /*
    it might not be as good in small 
    projects, but in large ones, this 
    saves a ton of time.
    */
</script>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.