Solved

HTML definition List (DL) onclick event problem

Posted on 2009-04-08
4
953 Views
Last Modified: 2012-06-22
I am learning HTML and Javascript. I encountered an issue when I ran the attached code. If I select the bottom drop down list item, the debug message for the definition list (dl) event handler (markLoadPage) is popped up instead of the one (setColor) for the drop down list. This issue won't show if I move the drop down list to the top of the definition list. Is there anything wrong for the dl onclick event syntax? Thanks!
<html>

  <head>

    <title>Test</title>

    <script language="javascript"> <!--
 

      function markLoadPage( page_url )

      {

	    alert( 'markLoadPage() called!' );

      }

      

      function setColor()

     {

	  alert( 'setColor() called!' );

	  	  

	    var idx = document.getElementById( "color_list" ).selectedIndex;

	    if( idx > 0 )

	    {

	      document.bgColor = document.getElementById( "color_list" ).options[ idx ].value;

          }

      } 

//--></script>

  </head>

  <body>

   <form action="">

     <h2>Categories</h2>

     <dl><a href="red_rose.html" target="P3" onclick="markLoadPage( 'red_rose.html' )">Red rose</dl>

     <dl><a href="pink_rose.html" target="P3" onclick="markLoadPage( 'pink_rose.html' )">Pink rose</dl>

     <dl><a href="yellow_rose.html" target="P3" onclick="markLoadPage( 'yellow_rose.html' )">Yellow rose</dl>

     <dl><a href="white_rose.html" target="P3" onclick="markLoadPage( 'white_rose.html' )">White rose</dl>

     <dl><a href="orange_rose.html" target="P3" onclick="markLoadPage( 'orange_rose.html' )">Orange rose</dl>

     <dl><a href="lavender_rose.html" target="P3" onclick="markLoadPage( 'lavender_rose.html' )">Lavender rose</dl>

     <p/><p/>

     <select name="color_list" id="color_list" onchange="setColor()">

       <option value="prompt">Choose a colour</option>

       <option value="red">red</option>

       <option value="pink">pink</option>

       <option value="yellow">yellow</option>

       <option value="white">white</option>

       <option value="orange">orange</option>

       <option value="lavender">lavender</option>

     </select>

     <p/>

     <input type="button" class="bt_style" value="Save Selection" name="bt_save">  

   </form>

  </body>

</html>

Open in new window

0
Comment
Question by:gs_kanata
  • 2
4 Comments
 
LVL 3

Accepted Solution

by:
GarthSnyder earned 200 total points
Comment Utility
Your <a> tags are unclosed, so the browser sees them as extending all the way to the end of the document. So the entire <select> popup is included in the link for lavender_rose and therefore has an onclick event.

Just close the <a>'s with </a> and you should be fine.
0
 
LVL 42

Assisted Solution

by:David S.
David S. earned 200 total points
Comment Utility
The HTML validator can be quite helpful: http://validator.w3.org/
0
 
LVL 75

Assisted Solution

by:Michel Plungjan
Michel Plungjan earned 100 total points
Comment Utility
I also strongly advice to change


      function markLoadPage( page_url )
      {
            alert( 'markLoadPage() called!' );
            return false; // cancel the link
      }

and

 onclick="return markLoadPage( '...' )"
0
 
LVL 75

Expert Comment

by:Michel Plungjan
Comment Utility
Why "B" ???
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

SASS allows you to treat your CSS code in a more OOP way. Let's have a look on how you can structure your code in order for it to be easily maintained and reused.
This article discusses four methods for overlaying images in a container on a web page
In this tutorial viewers will learn how to style transparent/translucent elements using alpha transparency in CSS Start with a normal styled element, such as a div.: Define its "background-color" property as "rgba (255, 255, 255, .5): The numbers in…
In this tutorial viewers will learn how to style a corner ribbon overlay for an image using CSS Create a new class by typing ".Ribbon":  Define the class' "display:" as "inline-block": Define its "position:" as "relative": Define its "overflow:" as …

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now