Avatar billede nicklasw Nybegynder
03. februar 2007 - 14:32 Der er 7 kommentarer og
1 løsning

kan ikke få min menu til at virke

Hejsa.
Jeg har lavet en javascript menu, men den virker ikke rigtig og jeg ved ikke hvorfor. Jeg er hel ny så har lidt svært ved at gennemskue hvor fejlen ligge...
her er koden

function CreatMenu(title, top, left)
{
    var hojde = 16;
    var table_top = top + hojde;
    var writethis = '<div style=\"position: absolute; left: ' + left + 'px; top: ' + top + 'border: 1px solid black; width: 100px; height: 16px;\" id=\"Jknap\" onmouseout=\"HidMenu()\" onmouseover=\"ShowMenu()\"><a style=\"font-size:10px;\">' + title + '\/</a></div>
                    <table style=\"    position: absolute; left: ' + left + 'px; top: ' + table_top + 'px; width: 250px; visibility: hidden; border: 1px solid black;\" onmouseout=\"HidMenu()\" onmouseover=\"ShowMenu()\" cellpadding=\"0px\" cellspacing=\"0px\" id=\"Jmenu\">
                        <tr><td class=\"Jtd\"><a style=\"color: black; font-weight: bold; text-decoration: none;\" href=\"?p=2275&valg=forside&id=new\">Ny nyhed eller artikel</a></td></tr>
                        $tr
                    </table>';
    document.write(writethis);
}

function ShowMenu()
{

    var menu = document.getElementById('Jmenu');

    menu.style.visibility='visible';
}

function HidMenu()
{
    var menu = document.getElementById('Jmenu');
    menu.style.visibility='hidden';
}

problemet ligge i at der ikke sker noget når jeg kalder min function CreatMenu(...){}

Håber i kan hjælper mig.

MVH Nicklas Jacoben
Avatar billede Slater Ekspert
03. februar 2007 - 15:40 #1
Du skifter linje i en streng, uden at ende den.

Altså. FORKERT:

streng = 'tekst
        mere tekst';

RIGTIGT:

streng = 'tekst' +
        'mere tekst';

.. Og så er der den underlige linje: $tr
Hvad skal den forestille at gøre? Det ligner mest en rest PHP kode midt i det hele.

Prøv med:

function CreatMenu(title, top, left)
{
    var hojde = 16;
    var table_top = top + hojde;
    var writethis = '<div style=\"position: absolute; left: ' + left + 'px; top: ' + top + 'border: 1px solid black; width: 100px; height: 16px;\" id=\"Jknap\" onmouseout=\"HidMenu()\" onmouseover=\"ShowMenu()\"><a style=\"font-size:10px;\">' + title + '\/</a></div>' +
                    '<table style=\"    position: absolute; left: ' + left + 'px; top: ' + table_top + 'px; width: 250px; visibility: hidden; border: 1px solid black;\" onmouseout=\"HidMenu()\" onmouseover=\"ShowMenu()\" cellpadding=\"0px\" cellspacing=\"0px\" id=\"Jmenu\">' +
                    '<tr><td class=\"Jtd\"><a style=\"color: black; font-weight: bold; text-decoration: none;\" href=\"?p=2275&valg=forside&id=new\">Ny nyhed eller artikel</a></td></tr>' +
                    '</table>';
    document.write(writethis);
}

function ShowMenu()
{

    var menu = document.getElementById('Jmenu');

    menu.style.visibility='visible';
}

function HidMenu()
{
    var menu = document.getElementById('Jmenu');
    menu.style.visibility='hidden';
}


- Og som en lille sidebemærkning, så ved du godt at HidMenu og CreatMenu er stavet forkert, ikke? Ikke at det betyder noget for scriptet altså :)
Avatar billede nicklasw Nybegynder
03. februar 2007 - 16:06 #2
CreateMenu
HideMenu
;)

den der $tr er php, det fordi at den putter nogen ind fra en database, burde jeg nok havde sagt... men prøver det lige
Avatar billede Slater Ekspert
03. februar 2007 - 16:10 #3
Du er forhåbentlig klar over, at du ikke bare kan skrive "$tr" midt i det hele så, men må skrive
<?php echo $tr; ?>
Avatar billede Slater Ekspert
03. februar 2007 - 16:10 #4
..eller er det fordi det hele allerede er inde i en print/echo i PHP?
Avatar billede Slater Ekspert
03. februar 2007 - 16:15 #5
Er det nok. Så giver det også mening at du skriver \" i stedet for bare ".
Men i så fald, hvorfor lave en document.write i Javascript, i stedet for bare at skrive det hele ud i PHP?
Avatar billede nicklasw Nybegynder
03. februar 2007 - 16:34 #6
Jojo er jeg klar over, havde bare lige overset det...

Du må godt ligge et svar...
men kan du lige fortælle mig hvordan jeg lægger to tal sammen f. eks.
var hej1 = 2;
var hej2 = 2;

var res = hej1 + hej2;

så det bliver 4 og ikke 22
Avatar billede nicklasw Nybegynder
03. februar 2007 - 16:50 #7
never mind... har fundet ud af det... så det bare svaret
Avatar billede Slater Ekspert
03. februar 2007 - 17:33 #8
I det tilfælde du skriver der, burde det netop blive 4 og ikke 22.
Hvis du derimod har to tekststrenge med tal i, som f.eks.

var hej1 = "2";
var hej2 = "2";

så vil hej1 + hej2 blive "22" ... for at undgå det, kan du lave en parseInt på dem, for at få tallet ud. Så:

var res = parseInt(hej1) + parseInt(hej2); vil give 4. Jeg ved godt du havde regnet den ud, det var bare lige et hint, hvis du ikke havde fået hele sammenhængen med :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester