tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
263
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    nic1981 nic1981 ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hallo Zusammen!

    Ich habe ein Problem, das im Internet schon desöfteren auch in anderen Foren aufgetaucht ist, aber nie so richtig gelöst wurde.

    Ich habe ein html-datei, die ein CSS-Script integriert hat.

    Folgender Code

    HTML-Code:
    <select size="1" name="Wurffeld1">
         <option id="a" value="0">W&uuml;rfe</option>
         <option id="b" value="100">100</option>
         <option id="b" value="200">200</option>
    </select>
    Im <HEAD> habe ich dann folgenden CSS-Code:
    HTML-Code:
    <style type="text/css">
    <!--
      #a {
             background-color:#F82811;
      }
                 
      #b {
             background-color:#11FE02;
      }
    -->
    </style>
    Die Aufgabe des Codes ist es, zur Laufzeit über die id die Hintergrundfarbe der SelectBox zu ändern.
    Dieses funktioniert beim IE tadellos, aber beim Firefox kann ich in der Auswahlliste zwar die Farben beim anklicken sehen, doch wenn ich mich dann für eine der Auswahlmöglichkeiten entschieden habe, ignoriert er die Hintergundfarbe und setzt diese auf weiß. Es steht nun die richtige Auswahl dort aber die Farbe ist nicht zu sehen. Selbst wenn ich in CSS background statt background-color benutze hat das keine Auswirkungen auf das Anzeigeergebnis.

    Suche dringend Hilfe!

    Viele Grüße,
    nic1981
     

  2. #2
    Maik Tutorials.de Gastzugang
    Hi,

    die Formular-Steuerelemente lassen sich nicht betriebssystem- und browserübergreifend einheitlich formatieren, wie es der Artikel Styling form controls und Styling even more form controls verdeutlichen, hier im Detail Styled select boxes und Styled multiple select boxes.

    Übrigens darf ein ID-Bezeichner (hier ID "b") im Dokumentbaum nicht mehrmals vergeben werden.

    mfg Maik
     

  3. #3
    nic1981 nic1981 ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hi Maik!

    Danke für die Antwort!

    Ich werde mir mal die Texte durchlesen. Ok, mit dem Dokumentenbaum verstehe ich. Darf ich aber z.B.: id=b im gesamten Dokument nur 1mal verwenden oder darf ich es im neuen select-tag wieder verwenden?

    Doch wie kann ich mein Problem jetzt lösen?

    Viele Grüße,
    nic1981
     

  4. #4
    Maik Tutorials.de Gastzugang
    Geht es aus meinem Beitrag und den genannten Seiten nicht klar hervor, dass es hierfür keine browserübergreifende Lösung gibt?

    Den ID-Bezeichner darfst du nur einmal zwischen <body></body> vergeben.

    mfg Maik
     

  5. #5
    Godstyle Godstyle ist gerade online Mitglied Brokat
    Registriert seit
    Feb 2008
    Ort
    Niedersachsen
    Beiträge
    282
    versuch es mal so:

    PHP-Code:
    <select size="1" name="Wurffeld1">
         <
    option class="a" value="0">W&uuml;rfe</option>
         <
    option class="b" value="100">100</option>
         <
    option class="b" value="200">200</option>
    </
    select

    PHP-Code:
    <style type="text/css">
    <!--
      .
    {
             
    background-color:#F82811;
      
    }
                 
      .
    {
             
    background-color:#11FE02;
      
    }
    -->
    </
    style
     
    Zerstöre, was dich zerstört, bevor es dich zerstört.
    In diesem Sinner:
    hehe

  6. #6
    Maik Tutorials.de Gastzugang
    Zitat Zitat von Godstyle Beitrag anzeigen
    versuch es mal so:

    PHP-Code:
    <select size="1" name="Wurffeld1">
         <
    option class="a" value="0">W&uuml;rfe</option>
         <
    option class="b" value="100">100</option>
         <
    option class="b" value="200">200</option>
    </
    select

    PHP-Code:
    <style type="text/css">
    <!--
      .
    {
             
    background-color:#F82811;
      
    }
                 
      .
    {
             
    background-color:#11FE02;
      
    }
    -->
    </
    style
    Versuch's doch selber, bevor du hier sinnlose Vorschläge postest.

    Ob nun ein ID- oder Klassenbezeichner verwendet wird, ist hier nämlich unerheblich.

    mfg Maik
     

  7. #7
    Godstyle Godstyle ist gerade online Mitglied Brokat
    Registriert seit
    Feb 2008
    Ort
    Niedersachsen
    Beiträge
    282
    habe ich doch siehe anhang. das blaue ist nur weil ich mit der maus drauf war.

    wenn ich das sichtbare im dropdown anders haben will mache ich es so:

    PHP-Code:

    <select class="a" size="1" name="Wurffeld1">
         <
    option class="b" value="0">W&uuml;rfe</option>
         <
    option class="b" value="100">100</option>
         <
    option class="b" value="200">200</option>
    </
    select
    daher verstehe ich nicht weshalb es unangebracht war.
    Angehängte Grafiken Angehängte Grafiken  
     
    Zerstöre, was dich zerstört, bevor es dich zerstört.
    In diesem Sinner:
    hehe

  8. #8
    Maik Tutorials.de Gastzugang
    Ganz einfach aus diesem Grund:
    Zitat Zitat von nic1981 Beitrag anzeigen
    Die Aufgabe des Codes ist es, zur Laufzeit über die id die Hintergrundfarbe der SelectBox zu ändern.
    Dieses funktioniert beim IE tadellos, aber beim Firefox kann ich in der Auswahlliste zwar die Farben beim anklicken sehen, doch wenn ich mich dann für eine der Auswahlmöglichkeiten entschieden habe, ignoriert er die Hintergundfarbe und setzt diese auf weiß.
    mfg Maik
     

  9. #9
    nic1981 nic1981 ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hallo ihr beiden!

    Bitte nicht streiten!

    Danke für eure Hilfe!
    Mit dem Classattribut funktioniert es leider auch nicht. Ist ja prinzipiell absolut richtig, denn class darf ich öfters verwenden, hingegen ich id nur 1 mal verwenden darf.
    Aber komischerweise hat die Gruppenzuordnung über class auch keine Auswirkung in Mozilla.

    Das komische ist ja, das im DropdownMenü bei klick die Farben richtig angezeigt werden, aber beim übernehmen bleibt das Ausgeählte weiß (siehe Anhang).

    Was kann ich tun? JavaScript?

    Viele Grüße,
    Nico

    Hallo Zusammen --- Problem gelöst --- mit JavaScript!

    MIt etwas kleinem Aufwand konnt ich die Problematik InternetExplorer und Firefox lösen.
    MIt Hilfe von JavaScript.

    Beispiel:

    HTML-Code:
    <body text="#FFFFFF" bgcolor="#000000" style="font-family:Verdana" onLoad="GoGreen()">
    ....
    ....
    ....
    <tr>
        <th id="id1"><?php $id=1;?>Max Muster</th>
        <td  width="70"><select size="1" name="SpieltagID1" id="SpieltagID1" onChange="GoGreenA()">
                     <option id="a" value="s0">Spieltag</option>
                     <?php include '../../include-files/Dropdown.php';?>
             </select>
        </td>
        <td width="70" ><select name="Wurffeld1" id="Wurffeld1" size="1" onChange="GoGreenA()">
                     <option id="a" value="0" >W&uuml;rfe</option>
                     <option id="b" value="100">100</option>
                     <option id="b" value="200">200</option>
             </select>
        </td>
        <td>Ergebnis: <input type="text" maxlength="4" size="5" id="Eingabe1" name="Eingabe1" onKeyup="GoGreen()"> </td>
        <td id="klein"><?php include '../../include-files/LetzterSpieltag.php';?></td>
        <?php include '../../include-files/BilderOKNotOkEintrag.php';?>
    </tr>
    ....
    ....
    ....
    </body>
    Folgender JavaScript-Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
    <!--
         function GoGreenA(){
          for(var i = 1; i <= 2; i++){
                    FeldA = "Wurffeld"+i;
                    if(window.document.getElementById(FeldA).value > 0){
                        window.document.getElementById(FeldA).style.backgroundColor="#11FE02"; //Gruen
     
     
                    }
                    else{
                         window.document.getElementById(FeldA).style.backgroundColor="#F82811";   //Rot
     
                    }
               }
           for(var a = 1; a <= 2; a++){
                    FeldB = "SpieltagID"+a;
                    if(window.document.getElementById(FeldB).value == "s0"){
                        window.document.getElementById(FeldB).style.backgroundColor="#F82811"; //Rot
     
     
                    }
                    else{
                         window.document.getElementById(FeldB).style.backgroundColor="#11FE02";   //Gruen
     
                    }
               }
         
         
         }
     
         function GoGreen(){
               for(var i = 1; i <= 2; i++){
                    Feld = "Eingabe"+i;
     
                    if(window.document.getElementById(Feld).value==""){
                        window.document.getElementById(Feld).style.backgroundColor="#F82811";
     
                    }
                    else{
     
                         window.document.getElementById(Feld).style.backgroundColor="#11FE02";
                    }
               }
               for(var a = 1; a <= 2; a++){
                    FeldA = "Wurffeld"+a;
                    if(window.document.getElementById(FeldA).value > 0){
                        window.document.getElementById(FeldA).style.backgroundColor="#11FE02"; //Gruen
     
     
                    }
                    else{
                         window.document.getElementById(FeldA).style.backgroundColor="#F82811";   //Rot
     
                    }
               }
               for(var a = 1; a <= 2; a++){
                    FeldB = "SpieltagID"+a;
                    if(window.document.getElementById(FeldB).value == "s0"){
                        window.document.getElementById(FeldB).style.backgroundColor="#F82811"; //Rot
     
     
                    }
                    else{
                         window.document.getElementById(FeldB).style.backgroundColor="#11FE02";   //Gruen
     
                    }
               }
     
     
         }

    Ich lese in Javascirpt immer die ID der Selectfelder aus. Sie werden bei mir im Quellcode immer um eins erhöht, also Wurffeld1, Wurffeld2,....
    Über den onChange() Befehl überprüft nun die Funktion, ob sich der ID-Wert geändert hat und passt dementsprechend die Hintergrundfarbe an.

    Es ist ein bisschen umständlich aber es funktioniert bei den beiden Browsern tadellos.

    Mmh, was meint ihr?

    Viele Grüße,
    nic1981
    Angehängte Grafiken Angehängte Grafiken    
     

  10. #10
    Maik Tutorials.de Gastzugang
    Was sollen wir dazu schon groß meinen, wenn's so funktioniert?

    mfg Maik
     

  11. #11
    nic1981 nic1981 ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hi Maik!

    Vielleicht kann ich es noch ein bisscehn modifizieren. Ich werde die Funktion GoGreen2() noch mit einem Parameter ausstatten, der vom Hauptprogramm mit übergeben wird. z.B. onChange="GoGreen2("Wurffeld1");
    Somit müssen nicht alle drei for-Schleifen durchlaufen werden, sondern es reicht nur ein Befehl. Somit bessere Performance, Zeitersparnis und Rechenleistungsersparnis, da das HTML-Dokument aus 50 Tabellenzeilen besteht und nicht wie bei mir im Beispiel nur aus einer bzw. zwei.

    Mal sehen, ob das so funktionieren wird.

    Viele Grüße,
    nic1981
     

  12. #12
    nic1981 nic1981 ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hallo Zusammen!

    So, dass Problem mit der Dartsellung der Hintergrundfarben in Firefox und Internet Explorer ist nun positiv gelöst!
    Folgende Lösung inkl. Code.

    Der HTML Code einer Tabellenzeile von sehr vielen (es werden bestimmt 50 solcher werden):
    In jeder neuen Zeile werden die Namen von mir einfach erhöht (also Eingabe1, Eingabe2, Eingabe3,...) damit es keine Verwechslungen im Quelltext gibt.
    Gleichermaßen können die Felder exakt angesprochen werden.

    HTML-Code:
    <body text="#FFFFFF" bgcolor="#000000" style="font-family:Verdana" onLoad="GoGreenStart()">
    ...
    <form name="HerrenErgebnisse" method="get" action="<?php $_SERVER['PHP_SELF'];?>" >
    ...
    ...
    <tr>
        <th id="id1"><?php $id=1;?>Spielername</th>
        <td  width="70"><select size="1" name="SpieltagID1" id="SpieltagID1" onChange="GoGreenSpieltag('SpieltagID1')">
                     <option id="a" value="s0">Spieltag</option>
                     <?php include '../../include-files/Dropdown.php';?>
             </select>
        </td>
        <td width="70" ><select name="Wurffeld1" id="Wurffeld1" size="1" onChange="GoGreenWurffeld('Wurffeld1')">
                     <option id="a" value="0" >W&uuml;rfe</option>
                     <option id="b" value="100">100</option>
                     <option id="b" value="200">200</option>
             </select>
        </td>
        <td>Ergebnis: <input type="text" maxlength="4" size="5" id="Eingabe1" name="Eingabe1" onKeyup="GoGreenErgebnis('Eingabe1')"> </td>
        <td id="klein"><?php include '../../include-files/LetzterSpieltag.php';?></td>
        <?php include '../../include-files/BilderOKNotOkEintrag.php';?>
    </tr>
    ...
    ...
    </form>
    </body>
    Bei jedem input Feld (input oder select) werden die Namen des Feldes als String mit an eine Javascript Funktion übergeben.
    Diese kann dann das Feld entsprechend den Einträgen rot oder grün erscheinen lassen.
    Im Body werden alle Formularfelder entsprechend ihrer Einträge ebenfalls über eine Javascript-Funktion gefärbt. ( GoGreenStart() ).

    Nun die Javascript Funktionen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    
    function GoGreenSpieltag(Inhalt){
     
                 FeldA = Inhalt;
                    if(window.document.getElementById(FeldA).value == "s0"){
                        window.document.getElementById(FeldA).style.backgroundColor="#F82811"; //Rot
     
     
                    }
                    else{
                         window.document.getElementById(FeldA).style.backgroundColor="#11FE02";   //Gruen
     
                    }
          }
          
          function GoGreenWurffeld(Inhalt){
     
                 FeldB = Inhalt;
                    if(window.document.getElementById(FeldB).value > 0){
                        window.document.getElementById(FeldB).style.backgroundColor="#11FE02"; //Gruen
     
     
                    }
                    else{
                         window.document.getElementById(FeldB).style.backgroundColor="#F82811";   //Rot
     
                    }
          }
          
          function GoGreenErgebnis(Inhalt){
          
                   FeldC = Inhalt;
     
                    if(window.document.getElementById(FeldC).value==""){
                        window.document.getElementById(FeldC).style.backgroundColor="#F82811";
     
                    }
                    else{
     
                         window.document.getElementById(FeldC).style.backgroundColor="#11FE02";
                    }
          }
     
     
          function GoGreenStart(){
               Anzahl = window.document.HerrenErgebnisse.length;
                   for(var zaehler = 0; zaehler < Anzahl-1; zaehler++){
                       if(window.document.HerrenErgebnisse.elements[zaehler].value=="" || window.document.HerrenErgebnisse.elements[zaehler].value == "s0" || window.document.HerrenErgebnisse.elements[zaehler].value==0){
                           window.document.HerrenErgebnisse.elements[zaehler].style.backgroundColor="#F82811"; //Rot
                       }
                       else{
                            window.document.HerrenErgebnisse.elements[zaehler].style.backgroundColor="#11FE02"; //Gruen
                       }
                   }
          }

    Somit kann man sich CSS beim Färben der Formularfelder sparen, bzw. man muss es sich sogar sparen, da es bei den beiden Browsern anscheinend unterschiedliche Interpretaionen des CSS gibt.

    So, ich hoffe, dass ich allen weiterhelfen konnte, die das gleiche Problem entdecken.

    Viele Grüße,
    nic1981
    Geändert von nic1981 (13.07.10 um 17:17 Uhr)
     

Ähnliche Themen

  1. onchange: Checkbox in Abhängikeit eines Dropdown
    Von blackhorse im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 04.03.08, 21:03
  2. Wert eines Dropdown Menüs in Textarea schreiben
    Von splat im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 12.01.07, 10:25
  3. Antworten: 2
    Letzter Beitrag: 01.12.05, 14:44
  4. per dropdown gewisse elemente eines Formulars einblende
    Von ReemE im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 08.07.05, 20:01
  5. Antworten: 0
    Letzter Beitrag: 06.10.04, 14:03