onchange not working in internet explorer

Discussion in 'Javascript' started by Mister Joe, Mar 16, 2007.

  1. Mister Joe

    Mister Joe Guest

    I have a page and if the user has javascript enables I am trying to
    dynamically change a link to a sitemap to a dropdown menu (that when
    the option is changed will forward the user to another page). Here's
    the code

    try{

    var sel = document.createElement("select");

    sel.setAttribute("onchange", "alert('');");

    for(var i=0;i<this.labels.length;i++){

    var op = document.createElement("option");

    op.value = this.hrefs;

    op.appendChild(document.createTextNode(this.labels));

    sel.appendChild(op);

    }



    var ql = document.getElementById("quicklinks");

    ql.replaceChild(sel, ql.firstChild);

    if(document.body){

    alert(document.body.innerHTML);

    alert(sel.getAttribute("onchange"));

    }

    }catch(e){alert(e.name+"\n"+e.message)

    }

    This works fine in firefox and when I display the generated html it
    shows the select node w/ the appropriate onchange attribute in both ff
    and ie. The problem is that the event is not working in ie. For some
    reason changing the option does nothing. Any ideas? Also is this the
    most unobtrusive way to achieve a quick links menu. Part of me is
    considering just using an html/css vertical menu instead of a pull
    down.

    Thanks Guys
     
    Mister Joe, Mar 16, 2007
    #1
    1. Advertising

  2. Mister Joe

    Mister Joe Guest

    On Mar 16, 10:05 am, "Mister Joe" <> wrote:
    > I have a page and if the user has javascript enables I am trying to
    > dynamically change a link to a sitemap to a dropdown menu (that when
    > the option is changed will forward the user to another page). Here's
    > the code
    >
    > try{
    >
    > var sel = document.createElement("select");
    >
    > sel.setAttribute("onchange", "alert('');");
    >
    > for(var i=0;i<this.labels.length;i++){
    >
    > var op = document.createElement("option");
    >
    > op.value = this.hrefs;
    >
    > op.appendChild(document.createTextNode(this.labels));
    >
    > sel.appendChild(op);
    >
    > }
    >
    > var ql = document.getElementById("quicklinks");
    >
    > ql.replaceChild(sel, ql.firstChild);
    >
    > if(document.body){
    >
    > alert(document.body.innerHTML);
    >
    > alert(sel.getAttribute("onchange"));
    >
    > }
    >
    > }catch(e){alert(e.name+"\n"+e.message)
    >
    > }
    >
    > This works fine in firefox and when I display the generated html it
    > shows the select node w/ the appropriate onchange attribute in both ff
    > and ie. The problem is that the event is not working in ie. For some
    > reason changing the option does nothing. Any ideas? Also is this the
    > most unobtrusive way to achieve a quick links menu. Part of me is
    > considering just using an html/css vertical menu instead of a pull
    > down.
    >
    > Thanks Guys




    I actually got the event to work by using attachEvent and
    addEventListener...but I'm still wondering if what I'm doing is the
    most unobtrusive way.
     
    Mister Joe, Mar 16, 2007
    #2
    1. Advertising

  3. Mister Joe

    Guest

    Mister Joe wrote:
    > I actually got the event to work by using attachEvent and
    > addEventListener...but I'm still wondering if what I'm doing is the
    > most unobtrusive way.


    use -
    element.onchange=FuncName
    or
    element.onchange=function(){ doWhatever() }

    the above works in all browsers, afaik.
     
    , Mar 16, 2007
    #3
  4. Mister Joe

    Darko Guest

    On Mar 16, 3:05 pm, "Mister Joe" <> wrote:
    > I have a page and if the user has javascript enables I am trying to
    > dynamically change a link to a sitemap to a dropdown menu (that when
    > the option is changed will forward the user to another page). Here's
    > the code
    >
    > try{
    >
    > var sel = document.createElement("select");
    >
    > sel.setAttribute("onchange", "alert('');");
    >
    > for(var i=0;i<this.labels.length;i++){
    >
    > var op = document.createElement("option");
    >
    > op.value = this.hrefs;
    >
    > op.appendChild(document.createTextNode(this.labels));
    >
    > sel.appendChild(op);
    >
    > }
    >
    > var ql = document.getElementById("quicklinks");
    >
    > ql.replaceChild(sel, ql.firstChild);
    >
    > if(document.body){
    >
    > alert(document.body.innerHTML);
    >
    > alert(sel.getAttribute("onchange"));
    >
    > }
    >
    > }catch(e){alert(e.name+"\n"+e.message)
    >
    > }
    >
    > This works fine in firefox and when I display the generated html it
    > shows the select node w/ the appropriate onchange attribute in both ff
    > and ie. The problem is that the event is not working in ie. For some
    > reason changing the option does nothing. Any ideas? Also is this the
    > most unobtrusive way to achieve a quick links menu. Part of me is
    > considering just using an html/css vertical menu instead of a pull
    > down.
    >
    > Thanks Guys


    As far as I know, the problem is that Internet Explorer recognizes
    something changed just after you lose focus on that element. That is,
    it "thinks" you're still changing it and will wait until you click
    somewhere on the side or on another element. If so, try combining with
    <option onclick> or something like that.
     
    Darko, Mar 16, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Shardool Karnik
    Replies:
    1
    Views:
    3,030
    G√ľnter Prossliner
    Aug 13, 2003
  2. cmay
    Replies:
    0
    Views:
    1,145
  3. Stefan Mueller
    Replies:
    2
    Views:
    11,708
    Stefan Mueller
    Nov 14, 2005
  4. Ed Hauptman
    Replies:
    7
    Views:
    1,032
    Ed Hauptman
    Aug 7, 2009
  5. John Smith
    Replies:
    1
    Views:
    149
    Evertjan.
    Mar 12, 2005
Loading...

Share This Page