---
title: "Drop-down menystrul - stannar nere vid funktionsanrop?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/130414-drop-down-menystrul-stannar-nere-vid-funktionsanrop"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2005-06-22T12:41:41.000Z"
updated: "2005-06-23T08:40:04.000Z"
replies: 7
views: 429
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/130414-drop-down-menystrul-stannar-nere-vid-funktionsanrop"
---

# Drop-down menystrul - stannar nere vid funktionsanrop?

## #1 — aasah, 2005-06-22T12:41Z

Jag håller på att försöka skapa en vettig drop-down meny. Eftersom detta funkar mindre bra har jag diverse testfiler för att försöka hitta felet. Eftersom filen innehåller både PHP, HTML, CSS och Javascript vet jag inte riktigt var jag borde posta om problemet, men det uppstår dock när jag försöker skriva ut HTML, CSS och Javascript via en funktion i PHP, varför jag valde detta forum. 

Jag har en testfil:
<http://www.tydal.nu/aasah/Lab/fishTryIncl.php>
Den inkluderar en menyfil, fishTrySec.php och blir hur tjusig som helst. Länkarna går ingenstans, men själva menyn bär sig civiliserat åt.

Men, när jag ska anpassa menyn till min verkliga sida, vill jag kunna ändra innehåll/utseende baserat på vissa variabler. (Val av topbanner, val av CSS-fil, osv.) Följdaktligen vill jag skriva ut även själva header-delen via en funktion, inte som statisk HTML. Så, då konstruerar jag en testfil som skriver ut samma meny, samma Javascriptkod och samma HTML, MEN via ett funktionsanrop med variabler - och plötsligt funkar ingenting!!! :o :q 

I min nya testfil:
<http://www.tydal.nu/aasah/Lab/fishTryIncl3.php>
stannar rullgardinsmenyerna nere!!! Om man en gång lockat fram dem, så fortsätter de att synas vare sig man håller kvar musen eller ej???? **Hur ända in i glödheta ... är det möjligt? VARFÖR?** (Åtminstone i IE v 5.50.) Kan det vara så att det beror på vilken webbläsare man har? Hur löser man det? Lite kod...

```php
//fishTry3.php - knäpp
<?php
session_start();
$url = "http://...";
$servPath = "/home/aasah/www/";

//Ska endast anropas från printHeader
function printMenu() {
  //Identisk med andra filen
}

//Anropas från fishTryIncl3.php
function printHeader($title = "", $google = "", $css = "fishMerge.css") {

   global $url, $servPath;

   if ($title != "") $title = "<title> [T&amp;T] $title </title>";
   else $title = "<title> [T&amp;T] </title>";
   //Lägg till stopp för sökmotorer
   if ($google != "hittaOK") 
      $googleInfo = "<meta name=\"robots\" content=\"noindex\">";
   else $googleInfo = "";
   $href = "href=\"$css\"";

$head = <<< EOHEADSTART
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  $google
  $title
  <link $href rel="stylesheet" type="text/css">
EOHEADSTART;

$js = <<< EOJSCRIPT
<script type="text/javascript">
// identiskt med den andra filen
</script>
EOJSCRIPT;

  echo "$head";
  echo "$js";
  echo "</head>
        <body>";
  printMenu();
}

?>
```

```php
//fishTrySec.php - fungerar
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <meta name="robots" content="noindex">
  <title>Just a simple test</title>
  <link href="fishMerge.css" rel="stylesheet" type="text/css">

<script type="text/javascript">
sfHover = function() {
  var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onmouseover=function() {
        this.className+=" sfhover";
      }
      sfEls[i].onmouseout=function() {
        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
      }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

</script>

</head>
<body>
<?php

//Anropas från fishTryIncl.php
function printMenu() {
//...
}
?>
```

Permalänk: https://www.webforum.nu/p/130414

## #2 — Pedda, 2005-06-22T13:50Z

Hinner inte kolla igenom koden nu, men i Firefox så funkar det som det ska.

Permalänk: https://www.webforum.nu/p/1633067

## #3 — aasah, 2005-06-23T07:31Z

> **Pedda skrev:**
>
> Hinner inte kolla igenom koden nu, men i Firefox så funkar det som det ska.

Jaha, då är det alltså ett problem för IE. Suck! Eftersom drygt 70% av mina besökare, plus jag, kör IE så måste det funka med denna usla browser...

Om någon vänlig människa har tid att försöka se var filerna skiljer sig åt skulle jag bli jättetacksam, efter helgen om inte annat.

Jag sammanställde hur källan för de två filerna ser ut, nån som ser någon skillnad?

```
//Strulfilen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  
  <title> [T&amp;T] </title>
  <link href="fishMerge.css" rel="stylesheet" type="text/css">

			<script language='javascript' src='http://127.0.0.1:1029/js.cgi?ca&r=26962'></script>

<script type="text/javascript">
sfHover = function() {
        var sfEls = document.getElementById("nav").getElementsByTagName("LI");
        for (var i=0; i<sfEls.length; i++) {
                sfEls[i].onmouseover=function() {
                        this.className+=" sfhover";
                }
                sfEls[i].onmouseout=function() {
                        this.className=this.className.replace(new RegExp(" sfhover\b"), "");
                }
        }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script></head>
        <body><ul id="nav" class="medium">
        <li><a class="menu " href="#">Home</a>
        </li>
        <li><a class="menu" href="#">News/Info</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">News</a></li>
                        <li><a class="submenu" href="#">FAQ</a></li>
                        <li><a class="submenu" href="#">Terms&nbsp;of&nbsp;Use</a></li>
                        <li><a class="submenu" href="#">Policies</a></li>
                        <li><a class="submenu" href="#">Site&nbsp;Map</a></li>
                        <li><a class="submenu" href="#">About</a></li>
                </ul>
         </li>
        <li><a class="menu" href="#">Puzzles</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">Quizzes</a></li>
                        <li><a class="submenu" href="#">Crosswords</a></li>
                        <li><a class="submenu" href="#">JigSaw</a></li>
                        <li><a class="submenu" href="#">Logic</a></li>
                </ul>
        </li>
        <li><a class="menu" href="#">Members</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">Member&nbsp;list</a></li>
                </ul>
        </li>
        <li><a class="menu" href="#">Login/Reg</a>
                    <ul class="sub">
                        <li><a class="submenu" href="#">Login</a></li>
                        <li><a class="submenu" href="#">Register</a></li>
                    </ul>
                </li>
        <li><a class="menu" href="#">Guestbook</a>
             </li>
        <li><a class="menu " href="#">Links</a>
        </li>
        

</ul><BR>
        <BR><H1>Trying out new T&amp;T Menu </H1>
```

 

```
//Den som fungerar
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <meta name="robots" content="noindex">
  <title>Just a simple test</title>
  <link href="fishMerge.css" rel="stylesheet" type="text/css">

			<script language='javascript' src='http://127.0.0.1:1029/js.cgi?ca&r=11478'></script>

<script type="text/javascript">
sfHover = function() {
        var sfEls = document.getElementById("nav").getElementsByTagName("LI");
        for (var i=0; i<sfEls.length; i++) {
                sfEls[i].onmouseover=function() {
                        this.className+=" sfhover";
                }
                sfEls[i].onmouseout=function() {
                        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
                }
        }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

</script>

</head>
<body>

<ul id="nav" class="medium">
        <li><a class="menu " href="#">Home</a>
        </li>
        <li><a class="menu" href="#">News/Info</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">News</a></li>
                        <li><a class="submenu" href="#">FAQ</a></li>
                        <li><a class="submenu" href="#">Terms&nbsp;of&nbsp;Use</a></li>
                        <li><a class="submenu" href="#">Policies</a></li>
                        <li><a class="submenu" href="#">Site&nbsp;Map</a></li>
                        <li><a class="submenu" href="#">About</a></li>
                </ul>
         </li>
        <li><a class="menu" href="#">Puzzles</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">Quizzes</a></li>
                        <li><a class="submenu" href="#">Crosswords</a></li>
                        <li><a class="submenu" href="#">JigSaw</a></li>
                        <li><a class="submenu" href="#">Logic</a></li>
                </ul>
        </li>
        <li><a class="menu" href="#">Members</a>
                <ul class="sub">
                        <li><a class="submenu" href="#">Member&nbsp;list</a></li>
                </ul>
        </li>
        <li><a class="menu" href="#">Login/Reg</a>
                    <ul class="sub">
                        <li><a class="submenu" href="#">Login</a></li>
                        <li><a class="submenu" href="#">Register</a></li>
                    </ul>
                </li>
        <li><a class="menu" href="#">Guestbook</a>
             </li>
        <li><a class="menu " href="#">Links</a>
        </li>
        

</ul><BR>
        <BR><H1>Trying out new T&amp;T Menu </H1>
```

 Bifogar också hur strulfilen ser ut för mig.

Bilagor:

- [screencapie550.jpg](https://www.webforum.nu/a/6767.jpg)

Permalänk: https://www.webforum.nu/p/1633352

## #4 — jawbreaker, 2005-06-23T08:21Z

En backslash har fallit bort från ditt reguljära uttryck i onmouseout-delen av funktionen sfHover i den felaktiga versionen. Det bör väl vara två stycken backslash mellan " sfHover" och "b" i new RegExp(...)?

Permalänk: https://www.webforum.nu/p/1633365

## #5 — aasah, 2005-06-23T08:28Z

> **jawbreaker skrev:**
>
> En backslash har fallit bort från ditt reguljära uttryck i onmouseout-delen av funktionen sfHover i den felaktiga versionen. Det bör väl vara två stycken backslash mellan " sfHover" och "b" i new RegExp(...)?

JA! :birp Det förklarar saken! Det är PHP som "käkar upp" det. **Hur många backslash behövs för att två ska komma ut? Tre eller fyra?**  

```
$js = <<< EOJSCRIPT
<script type="text/javascript">
....
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
....
</script>
EOJSCRIPT;
```

Permalänk: https://www.webforum.nu/p/1633367

## #6 — jawbreaker, 2005-06-23T08:30Z

Då ska du nog klämma till med fyra stycken  :)

Permalänk: https://www.webforum.nu/p/1633370

## #7 — aasah, 2005-06-23T08:34Z

Tusen miljoner tack! Jag har brottats med detta i ca en vecka! :birp :e :D

Permalänk: https://www.webforum.nu/p/1633374

## #8 — jawbreaker, 2005-06-23T08:40Z

Varsågod  :birp

Permalänk: https://www.webforum.nu/p/1633376

---

Tråden på webben: https://www.webforum.nu/amne/php/130414-drop-down-menystrul-stannar-nere-vid-funktionsanrop
