Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7690659
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T20:26:51+00:00 2026-05-31T20:26:51+00:00

I am trying to dynamically make divs that are clickable. I have inserted a

  • 0

I am trying to dynamically make divs that are clickable. I have inserted a test function. The test function runs even though the div has not been clicked.

  function displayResults(responseTxt)
  { 
        var results = document.getElementById("results");
        jsonObj = eval ("(" + responseTxt + ")");
        var length = jsonObj.response.artists.length;
        results.innerHTML = "Please click on an artist for more details: "
        
        for ( var i = 0; i < length; i++)
        {
            var entry = document.createElement("div");
            var field = document.createElement("fieldset");
            
            entry.id = i;
            entry.innerHTML = i + 1 + ". " + jsonObj.response.artists[i].name; 
            field.appendChild(entry);
            results.appendChild(field);
            //entry.addEventListener("click", idSearch(jsonObj.response.artists[i].id), false);
            entry.addEventListener("click", test(), false);
            
        } 
  } // end function displayResults          
  
  function test()
  {
        document.getElementById("results").innerHTML = "tested";
  }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T20:26:52+00:00Added an answer on May 31, 2026 at 8:26 pm

    You are calling the test() function and passing its return value to .addEventListener(). Remove the parentheses:

    entry.addEventListener("click", test, false);
    

    So that you pass the function itself to .addEventListener().

    That answers the question as asked, but to anticipate your next problem, for the line you’ve got commented out you’d do this:

    entry.addEventListener("click",
                           function() {
                              idSearch(jsonObj.response.artists[i].id);
                           }, false);
    

    That is, create an anonymous function to pass to .addEventListener() where the anonymous function knows how to call your idSearch() function with parameters. Except that won’t work because when the event is actually triggered i will have the value from the end of the loop. You need to add an extra function/closure so that the individual values of i are accessible:

        for ( var i = 0; i < length; i++)
        {        
            var entry = document.createElement("div");
            var field = document.createElement("fieldset");
    
            entry.id = i;
            entry.innerHTML = i + 1 + ". " + jsonObj.response.artists[i].name; 
            field.appendChild(entry);
            results.appendChild(field);
            // add immediately-invoked anonymous function here:
            (function(i) {
                entry.addEventListener("click",
                                   function() {
                                      idSearch(jsonObj.response.artists[i].id);
                                   }, false);
            })(i);
        }
    

    That way the i in jsonObj.response.artists[i].id is actually going to be the parameter i from the anonymous function which is the individual value of i from the loop at the time each iteration ran.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to make a div that contains other floating divs to adjust
Trying to make a make generic select control that I can dynamically add elements
I'm trying to dynamically define functions that call through to another function that takes
I'm trying to make a web page that only has content within the page
I am trying to make a link that tweets the dynamically dreated content of
hi friends i was trying to make my service act dynamically... i have set
I am trying to make a program that dynamically creates a button using the
Question I am trying to dynamically get the default for a type that is
I am trying to dynamically filter search results. Every result has tags associated with
Background: I'm trying to produce dynamically generated Factsheets, where each Factsheet has a number

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.