Avatar billede andreas13_fam Nybegynder
06. februar 2009 - 17:21 Der er 6 kommentarer og
1 løsning

En del små spørgsmål

Jeg er ved at lære lidt JavaScript, og til at starte med ville jeg lave en simpel udgave af ThickBox. Men jeg har lidt problemer og spørgsmål (koden ses nederst)

1. function myboxopen(...) driller lidt (der sker ikke noget når man aktivere det), da der tilsyneladende ikke sker nogen, jeg har den tanke at det er setTimeout(...) der er nogen galt med, men der er sikkert også andet.

2. Hvordan kan man erstatte en tekst, fx vil jeg gerne erstatte mybox-overskirft med variablen navn

3. Er det muligt at gøre sådan at den skal vise billedet loading.gif intil det rigtige billede [variable real] er indlæst, og dermed ikke kun de 3 sek som det er nu.

4. Findes der en indbygget funktion der gør at JavaScriptet fx udføre en function når man trykke på en bestemt tast.

JavaScript aktiveres med fx...
<a href="#" onclick="myboxopen(Billeder/P11700001_real.jpg, Knuds lamme frikadeller, 700, 525);">TEST</a>´

JavaScriptet ser sådan ud...

function myboxopen(real, navn, hoj, bred)
{
bred = bred + 32;
hoj = hoj + 98;
document.getElementById('mybox').style.display = 'block';
document.getElementById('myboxbilled').src='mybox/Loading.gif';
document.getElementById('tablebox').style.width = '' + bred + 'px';
document.getElementById('tablebox').style.height = '' + hoj + 'px';
myboxbillede = new Image();
myboxbillede.src = '' + real + '';
setTimeout("document.getElementById('myboxbilled').src='Billeder/' + real + '';", 3000);
}
function myboxclose()
{
document.getElementById('mybox').style.display = 'none';
document.getElementById('myboxbilled').src='mybox/Loading.gif';
}

HTML delen ser sådan ud...
            <div id="mybox" class="upperbillede" style="display:none;">
                <table id="tablebox" class="upperramme" cellpadding="0" cellspacing="0" style="width:200px;height:200px;">
                    <tr>
                        <td class="LeftTop"></td><td class="Top" colspan="3"></td><td class="RightTop"></td>
                    </tr>   
                    <tr>
                        <td class="Left" rowspan="3"></td>
                        <td class="Andet" align="left">
                        &nbsp;
                        </td>
                        <td class="upperoverskrift">
                            <strong>mybox-overskrift</strong>
                        </td>
                        <td class="F11" align="right">Fuld skærm: Tryk F11</td>
                        <td class="Right" rowspan="3"></td>
                    </tr>   
                    <tr>
                        <td class="upperbillede" colspan="3">
                            <img src="mybox/Loading.gif" alt="billede" id="myboxbilled" />
                        </td>
                    </tr>
                    <tr>
                        <td class="upperafslut" colspan="3">
                            <img src="mybox/close.png" alt="LUK" onclick="myboxclose()" style="cursor:pointer;" />
                        </td>
                    </tr>
                    <tr>
                        <td class="LeftBottom"></td><td class="Bottom" colspan="3"></td><td class="RightBottom"></td>
                    </tr>
                </table>
            </div>
Eksemplet ses her...
http://www.kogebogen.a-mweb.dk/index.php?Opskrift=48# --> link:TEST
Avatar billede nicklasb Nybegynder
07. februar 2009 - 16:21 #1
Brug eventuelt Firebug til Firefox, når du udvikler web. Det hjælper rigtig meget, da den giver langt bedre fejlmeddelelser end IE ..

1. Den er gal med dit funktionskald. Ret
    <a href="#" onclick="myboxopen(Billeder/P11700001_real.jpg, Knuds lamme frikadeller, 700, 525);">TEST</a>
så dine strenge fremstår som sådan
    <a href="#" onclick="myboxopen('Billeder/P11700001_real.jpg', 'Knuds lamme frikadeller', 700, 525);">TEST</a>

2. Du bruger en statis og samme kode til at vise alle kald til myboxopen -metoden (hvilket der som sådan ikke er noget forkert i). Den letteste løsning er nok at give
    <strong>mybox-overskrift</strong>
et id, så den kommer til at hedde
    <strong id="mybox-overskrift">mybox-overskrift</strong>
og så udvide din myboxopen metode med
    document.getElementById('mybox-overskrift').innerHTML = navn;

3. Søg efter 'javascript preloader bar' eller lignende. Der finder mange eksempler på sådanne ..

4. Du skal fange key-events, ved i initialiseringen af din body, at påhæfte en eventListener. Se http://unixpapa.com/js/testkey.html
Avatar billede andreas13_fam Nybegynder
07. februar 2009 - 16:25 #2
Er der ingen ekspert der kan hjælpe.
Jeg vil da gerne give flere point, men jeg ved ikke helt hvordan man gør i eksperten v5
Avatar billede nicklasb Nybegynder
07. februar 2009 - 16:49 #3
Jeg forstår ikke helt hvad du mener?
Hvad er det du spørger om hjælp til? Og har du prøvet det jeg har svaret?
Avatar billede andreas13_fam Nybegynder
07. februar 2009 - 17:07 #4
ja men da jeg skæv var der ingen der havde svaret, men jeg ser lige på det :D
Avatar billede andreas13_fam Nybegynder
07. februar 2009 - 18:20 #5
1,2,3 er nu løst
Men
document.getElementById('tablebox').style.width = bred + 'px';
document.getElementById('tablebox').style.height = hoj + 'px';
giver nogle problemmer breden og højden bliver nemelig alt for stor, problemet opstår kun når der er variabler i, mens det fint virker med
document.getElementById('tablebox').style.width = '750px';
document.getElementById('tablebox').style.height = '550px';

JavaScriptet ser nu sådan ud...

function myboxopen(real, navn, hoj, bred)
{
bred = bred + 32;
hoj = hoj + 98;
document.getElementById('mybox').style.display = 'block';
document.getElementById('tablebox').style.width = bred + 'px';
document.getElementById('tablebox').style.height = hoj + 'px';
document.getElementById('mybox-overskrift').innerHTML = navn;
document.getElementById('myboxbilled').src='mybox/Loading.gif';

// create an image object
myboxbillede = new Image();
// preload the image file
myboxbillede.src = real;
// set what happens once the image has loaded
myboxbillede.onLoad=imagesLoaded();   

    // function invoked on image load
    function imagesLoaded()
    {       
        document.getElementById('myboxbilled').src = real;
    }

}
function myboxclose()
{
document.getElementById('mybox').style.display = 'none';
document.getElementById('myboxbilled').src='mybox/Loading.gif';
}
Avatar billede nicklasb Nybegynder
07. februar 2009 - 19:58 #6
Du har smit højden og bredden med som strenge også. Det er kun strengene du skal sætte gåseøjne om.
Hvis hoj og bred bliver sat som strenge (fx 100), vil
bred = bred + 32;
resultere i bred = 10032.

Prøv at ændre kaldet til funktionen, så der står
<a href="#" onclick="myboxopen('Billeder/P11700001_real.jpg', 'Knuds lamme frikadeller', 700, 525);">TEST</a>
(ligesom jeg skrev det i mit første svar)
Avatar billede andreas13_fam Nybegynder
07. februar 2009 - 22:06 #7
Tak nu virker det hele, borset fra nogle små layout fejl.
Dit svar er aksepteret :D
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