Fehler in der Anzeige

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler in der Anzeige

    Hallo,
    ich habe eine Tabelle mit Mouseover erstellt und sobald ich eine Zeile auswähle bzw. mit der Maus drüber fahre erscheint über der Tabelle ein blauer Balken.
    Dieser blaue Balken ist im Prinzip nichts anderes als der gleiche Eintrag nochmal aber ohne CONTENT. (Siehe anhgehängtes Screen).

    Kann mir jemand sagen wie sowas passieren kann? Hier mal ein kleiner Ausschnitt aus dem Code, der an dieser Stelle zum Tragen kommt:

    PHP-Code:
    $dformid "detail_form_$id";
    echo 
    "<form name='$dformid' method='get' action='index.php'>";
        echo 
    '<input type="hidden" name="seite" value="detail">
        <tr bgcolor="#FFFFFF"; onMouseOver=this.style.backgroundColor="#48B6FF" this.style.cursor="hand";
                onMouseOut=this.style.backgroundColor="#FFFFFF" onclick="document.'
    .$dformid.'.submit()">
            <input type="hidden" name="id" value="'
    .$row["lfd_nr"].'">
            <td class="w40">'
    .$id.'</td>
            <td class="w60">'
    .$row2["0"]. '</td>
            <td class="w60">'
    .$row["kat"].'</td>
            ...........
        </tr>
        '
    ;
    echo 
    "</form>";

    }
    echo 
    '</table>'

  • #2
    Und hier noch der dazugehörige Screen:
    Angehängte Dateien

    Kommentar


    • #3
      Kann mir jemand sagen wie sowas passieren kann?
      zb. leerer Datensatz?
      Da scheint ja auch irgendwo eine for-Schleife zu sein - und was mich stutzig macht ist auch die Struktur hier:

      <form
      <input
      <tr

      sieht ja so aus als würde ein Formular mitten in einer Tabelle hängen - nicht gerade die feine englische Art....

      Sind aber 2 Schüsse ins blaue....
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Kommentar


      • #4
        Ich finde die Deklaration in dem tr-Tag sehr ungewöhnlich:
        PHP-Code:
        <tr bgcolor="#FFFFFF"onMouseOver=this.style.backgroundColor="#48B6FF" this.style.cursor="hand";             onMouseOut=this.style.backgroundColor="#FFFFFF" onclick="document.'.$dformid.'.submit()"

        Bei onMouseOver muss der folgende Ausdruck in Anführungszeichen stehen, da "this.style.cursor="hand";" für sich allein steht. Genau so bei onMouseOut.

        Der Fehler entsteht, weil bestimmte Teile nicht Tabellenkonform sind und daher außerhalb der Tabelle angezeigt werden. Prüfe deine Syntax, das könnte daran liegen.

        Verbesserungsvorschlag ungetestet (einfache Anführungszeichen im String maskieren natürlich):

        PHP-Code:
        $dformid "detail_form_$id";
        echo 
        "<form name='$dformid' method='get' action='index.php'>";
            echo 
        '<input type="hidden" name="seite" value="detail">
            <tr bgcolor="#FFFFFF" onMouseOver='
        this.style.backgroundColor="#48B6FF"this.style.cursor="hand";\'
                    onMouseOut='
        this.style.backgroundColor="#FFFFFF"' onclick="document.'.$dformid.'.submit()">
                <input type="hidden" name="id" value="'
        .$row["lfd_nr"].'">
                <td class="w40">'
        .$id.'</td>
                <td class="w60">'
        .$row2["0"]. '</td>
                <td class="w60">'
        .$row["kat"].'</td>
                ...........
            </tr>
            '
        ;
        echo 
        "</form>";

        }
        echo 
        '</table>'

        Kommentar


        • #5
          Original geschrieben von alex2iceman
          Verbesserungsvorschlag ungetestet (einfache Anführungszeichen im String maskieren natürlich) ....
          Vielen Dank für Eure Vorschläge. Ich habe o.g. Vorschlag mal umgesetzt (zusätzliche einfach Anführungsstriche mit \' gemacht).

          Jetzt wird die Tabelle zwar etwas "richtiger" angezeigt - allerdings ohne Mousover-Effekt.

          Codeschnipsel meiner Änderung:

          PHP-Code:
              echo '<input type="hidden" name="seite" value="detail">
              <tr bgcolor="#FFFFFF"; onMouseOver=\'this.style.backgroundColor="#48B6FF" this.style.cursor="hand";\'
                      onMouseOut=\'this.style.backgroundColor="#FFFFFF"\' onclick="document.'
          .$dformid.'.submit()"> 

          Kommentar


          • #6
            Ohje - ich sehe gerade dass mein Backslash ' Kombination nicht angezeigt wird ... daher hier noch ein Screenie von dem Code :-)
            Angehängte Dateien

            Kommentar


            • #7
              ich würde die onmouse befehle ja in funktionen packen, fände ich übersichtlicher .....
              Zuletzt geändert von mcmurphy; 09.09.2008, 12:24.
              "I don't want to belong to any club that would accept me as a member."

              Groucho Marx

              Kommentar


              • #8
                Original geschrieben von mcmurphy
                ich würde die onmouse befehle ja in ein funktionen packen, fände ich übersichtlicher .....
                So in etwa?

                var onmouse= new Function("onMouse",
                onMouseOver='this.style.backgroundColor="#48B6FF";
                this.style.cursor="hand";'
                onMouseOut='this.style.backgroundColor="#FFFFFF" ');

                Kommentar


                • #9
                  erstens fehlt dort ein Semikolon:
                  PHP-Code:
                  onMouseOver='this.style.backgroundColor="#48B6FF";this.style.cursor="hand";' 
                  Mit der Funktion ist das so gemeint:

                  irgendwo im Header oder einfach ganz oben innerhalb eines Script-Tags:

                  function ModZeile(zeile){
                  zeile.style.backgroundColor="#48B6FF";
                  zeile.style.cursor="hand";
                  }

                  dann innerhalb der Zeile:

                  PHP-Code:
                  onMouseOver='ModZeile(this)' 
                  natürlich ungetestet aber sollte gehen

                  Kommentar


                  • #10
                    onMouseOver='this.style.backgroundColor="#48B6FF" this.style.cursor="hand";'

                    =>
                    function foo(obj){
                    obj.style.backgroundColor="#48B6FF";
                    obj.style.cursor="hand";
                    }


                    onMouseOver="foo(this);"

                    aber nicht getestet....

                    @icemann:
                    rasant, rasant....
                    "I don't want to belong to any club that would accept me as a member."

                    Groucho Marx

                    Kommentar


                    • #11
                      Übrigens hätte dir ein JS-Debugger den Fehler mit dem Semikolon angezeigt. Schaue in die Fehlerkonsole vom Firefox.

                      Kommentar


                      • #12
                        Also sobald ich die ' um die onmouse-Stellen mache zeigt er gar keine Seite mehr an. Änder ich dann das ' in Backslash' wirds wieder genauso angezeigt wie vorher ohne die ' ...

                        Kommentar


                        • #13
                          PS: Hier auf der Arbeit kann ich NUR IE benutzen, andere Browser funzen leider nicht :-(

                          Kommentar


                          • #14
                            Original geschrieben von Lavingstar
                            So in etwa?

                            var onmouse= new Function("onMouse",
                            onMouseOver='this.style.backgroundColor="#48B6FF";
                            this.style.cursor="hand";'
                            onMouseOut='this.style.backgroundColor="#FFFFFF" ');
                            Nein in etwa so..

                            Code:
                            function chstyle(par) {
                            	var id = par;
                            	document.getElementById(id).style.backgroundColor = "#FFFFFF";
                            	document.getElementById(id).style.cursor="hand";
                            }

                            Die Funktion packst du dann in ne JS-Datei und bindest sie auf der Seite ein.

                            dann brauchst im HTML-Teil nur noch die Funktion aufrufen

                            [Code]
                            <tr bgcolor="#FFFFFF" id="1" onMouseOver="chstyle(1);">
                            [Code]
                            Lurchi ! Lurchi ! Lurchi !

                            Kommentar


                            • #15
                              Danke euch allen schonmal für die Function-Codes !! :-)
                              Werd ich gleich ma austesten ...

                              Kommentar

                              Lädt...
                              X