gondor: Javascript-Problem. Hintergrund eines li-Elements fixieren

Hallo,

ich habe mal eine Frage bezüglich Javascript.

Mit den Events mouseover und mouseout wird der Hintergrund eines li-Elements gewechselt.

<li id="rollover" onmouseover="changeBackground('rollover', '#FFFFFF')" onmouseout="changeBackground('rollover', '#EDEDED')">
 <a href="#" onClick="openPopUpImageType();">Open</a>
</li>

Jetzt möchte ich aus Javascript heraus sagen, dass in einer bestimmten Situation der Hintergrund nicht mehr gewechselt werden soll.

Leider fehlt mir hier der Ansatz, wie ich das realisieren kann.

Einfach wäre es, wenn ich über Javascript den Wert von onmouseout="changeBackground('rollover', '#EDEDED')" nach onmouseout="changeBackground('rollover', '#FFFFFF')" wechseln kann.

Ist mein Problem verständlich? Wie würdet Ihr das lösen? Vllt. ist mein Ansatz schon der falsche...

Danke für Hilfe,

gondor(..)

  1. Hallo,

    habe es selber hinbekommen. Ich änder einfach die id des Elements mit:

    document.getElementById('rollover').id='rollover_off';

    Vllt. keine elegante Lösung, funktioniert aber ;-)

    gondor(..)

    1. Hallo,

      habe es selber hinbekommen. Ich änder einfach die id des Elements mit:

      document.getElementById('rollover').id='rollover_off';

      Vllt. keine elegante Lösung, funktioniert aber ;-)

      ... erhälst du beim 2. Click auf das rollover-li keinen js-Fehler?
      document.getElementById('rollover') ergibt dann doch undefined?

      ich würde ein Flag definieren und am zugehörigen <ul>-Element festmachen, etwa so:

        
      <ul>  
      <li style="cursor:pointer"  
      onmouseover="changeBackground(this, '#FFFFFF')"  
      onmouseout ="changeBackground(this, '#EDEDED')"  
      onClick="openPopUpImageType(); fix_li_bg(this);"> Open </li>  
      <li>... </li>  
      </ul>  
      
      
        
      function fix_li_bg(li_elem) {  
       var ul=li_elem.parentNode;  
       if ( ul.nodeName != "UL" ) {  
        alert("erwartet wird ein UL-Element, es ist aber: "+ul.nodeName);  
        }  
       ul.fix_flag = true;  
       }  
        
      function changeBackground(li_elem,farbe) {  
       var ul=li_elem.parentNode;  
       if ( !ul.fix_flag) {  
        // fix_flag ist false oder noch nicht definiert  
        li_elem.style.backgroundColor=farbe;  
        }  
       }  
      
      

      Gruß plan_B

      --
           *®*´¯`·.¸¸.·