Fehler in der Anzeige

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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:
    Attached Files

    Comment


    • #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

      Comment


      • #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>'

        Comment


        • #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()"> 

          Comment


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

            Comment


            • #7
              ich würde die onmouse befehle ja in funktionen packen, fände ich übersichtlicher .....
              Last edited by mcmurphy; 09-09-2008, 11:24.
              "I don't want to belong to any club that would accept me as a member."

              Groucho Marx

              Comment


              • #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" ');

                Comment


                • #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

                  Comment


                  • #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

                    Comment


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

                      Comment


                      • #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 ' ...

                        Comment


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

                          Comment


                          • #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 !

                            Comment


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

                              Comment

                              Working...