I have the following.
<a href="#" onclick="hello()">click me</a>
And I have a Javascript file
$(document).ready(function() {
function hello() {
alert('hi');
}
});
But when I click on “click me”, the alert is not being fired. It says “hello” is not defined. I remove document.ready, and it works.
Is this because “hello” is not being defined until the entire document is ready, but when the above “anchor” tag is being rendered, it can’t find the function?
Is there any way I can get this to work?
- I have to call javascript function from the html tag via ugly “onclick”
- I need to keep my JS inside document.ready (there are other parts I need)
Your
hello()function declaration is not in the global scope so the call from the HTML which is trying to call it at the global scope can’t find it. You can either fix it by moving yourhello()function into the global scope:or by declaring it at the global scope: