Reputation: 111
I'm a beginner web developer who is in the process of putting together a simple website that will use an API to display data from various cities based on different buttons a user can click. I've written a general function that takes in a city parameter, runs it through the API, and sends the appropriate data back to my HTML page. I'm just having trouble getting the event listener for my buttons to work as expected.
Listener examples:
city1button.onclick = cityInfo("city1");
city2button.onclick = cityInfo("city2");
Based on some research, I now realize that my code is invoking my functions before a button is pressed. I've found some more elaborate solutions online but was wondering if there is a simple way that could ideally be kept in one line. Thanks in advance. I really appreciate the help.
Upvotes: 1
Views: 61
Reputation: 45
Try this code
document.getElementById("aaa").addEventListener("click",function(){
var x = "xx";
functionName(x);
});
Upvotes: 1
Reputation: 79
There is a clean way to attach an event handler function to a specific target element:
example
// grab the targets
const button_1 = document.getElementById('clickable_1');
const button_2 = document.getElementById('clickable_2');
// add events to the targets
button_1.addEventListener('click', () => { console.log('clickable 1 function ...'); });
button_2.addEventListener('click', () => { console.log('clickable 2 function ...'); });
<button id="clickable_1">clickme 1</button>
<button id="clickable_2">clickme 2</button>
Upvotes: 0
Reputation: 119
Try wrapping your named function in an anonymous one, like this:
var outer = function(){
function innerFunction(){
}
}
This puts it inside the scope of another function rather than your whole window/program on initial load.
Upvotes: 1