Avatar billede nicklasw Nybegynder
21. juli 2008 - 16:02 Der er 9 kommentarer og
1 løsning

pop up boks (ikke window) i javascript

Hejsa.
Jeg er igang med eller prøver på at lave en boks der skal poppe op på min hjemmeside. det gør jeg på den måde at jeg har en table som er skjult og når jeg vil havde den til at poppe op gør jeg den synlig igen. Det virker sådan set også udemærket, men problemmet er at jeg ikke kan få boksen til at side i midten af skærmen. Min kode ser sådan ud:

<script type="text/javascript">

var box = document.getElementById('pop_up');

  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }


myWidth = myWidth / 2;
myHeight = nyHeight / 2;

var box_height = box.style.height / 2;
var box_width = bow.style.width / 2;

box.style.top = myHeight - box_height;
box.style.left = myWidth - box_width;

function pop_up_show()
{
    box.style.visibility = 'visible';
}

function pop_up_hide()
{
    box.style.visibility = 'hidden';
}

</script>

Den måde jeg finder midten på er, at finde det antal pixels jeg har at lege med i browseren dividere det med 2 og trækker halvdelen af boksen størrelse fra(så skulle man gerne finde midten. Men der er åbenbart ikke nogen function der hedder style.top eller style.left (eller hvad?).

Jeg ved ikke om jeg griber det helt forkert an eller om jeg er på rette spor. hvis der nogen der ved hvordan man laver sådan en boks på en helt anden måde vil jeg også gerne vide det.

MVH Nicklas
Avatar billede w13 Novice
21. juli 2008 - 16:27 #1
I stedet for style.height så brug offsetHeight, i stedet for style.width så offsetWidth, i stedet for style.top så offsetTop og style.left bliver så selvfølgelig til offsetLeft.

Det kræver måske bare, at du sætter den til visible, inden du bruger disse offset-koder.
Avatar billede nicklasw Nybegynder
21. juli 2008 - 16:33 #2
okay og det skulle give mig de værdig som top left, and so on?
Avatar billede nicklasw Nybegynder
21. juli 2008 - 16:40 #3
Jeg kan stadig ikke få det til at virke...
kan du muligvis komme med et eksempel?
Avatar billede w13 Novice
21. juli 2008 - 16:43 #4
Prøv først med følgende. Hvis det ikke virker, skal jeg lige sætte box-elementet til at blive vist, inden vi finder højde/bredde/top/left og så må det bare blive skjult igen, når vi har fundet værdierne.

<script type="text/javascript">

var box = document.getElementById('pop_up');

  var myWidth = myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

myWidth = myWidth / 2;
myHeight = nyHeight / 2;

var box_height = box.offsetHeight / 2;
var box_width = bow.offsetWidth / 2;

box.style.top = myHeight - box_height;
box.style.left = myWidth - box_width;

function pop_up_show()
{
    box.style.visibility = 'visible';
}

function pop_up_hide()
{
    box.style.visibility = 'hidden';
}

</script>
Avatar billede w13 Novice
23. juli 2008 - 10:40 #5
Kan du få det til at spille?
Avatar billede nicklasw Nybegynder
24. juli 2008 - 13:18 #6
Kan ikke teste af lige nu desværre skal på ferie nu. men tester det af lige så snart jeg kan og så får du dine point
Avatar billede w13 Novice
25. juli 2008 - 08:45 #7
Fintfint. =)
Avatar billede w13 Novice
25. juli 2008 - 08:46 #8
box.style.top = myHeight - box_height;
box.style.left = myWidth - box_width;

skal i øvrigt være:

box.style.top = myHeight - box_height + "px";
box.style.left = myWidth - box_width + "px";

for at det kan virke i FireFox. Dvs.:

<script type="text/javascript">

var box = document.getElementById('pop_up');

  var myWidth = myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

myWidth = myWidth / 2;
myHeight = nyHeight / 2;

var box_height = box.offsetHeight / 2;
var box_width = bow.offsetWidth / 2;

box.style.top = myHeight - box_height + "px";
box.style.left = myWidth - box_width + "px";

function pop_up_show()
{
    box.style.visibility = 'visible';
}

function pop_up_hide()
{
    box.style.visibility = 'hidden';
}
</script>
Avatar billede nicklasw Nybegynder
29. juli 2008 - 13:53 #9
Tusind tak. det virkede næsten måtte lige ændre nogen stavefejl jeg havde lavet. koden ser sådan ud nu.

<table id="pop_up" style="visibility: hidden; height: 400px; width: 400px; background-color: black; position: fixed; z-index: 200; border: red 4px solid;">
    <tr>
        <td>
            <p><a style="color: white;" href="java script: pop_up_hide()">hide</a></p>
        </td>
    </tr>
</table>

<script type="text/javascript">

var box = document.getElementById('pop_up');

  var myWidth = myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

myWidth = myWidth / 2;
myHeight = myHeight / 2;

var box_height = box.offsetHeight / 2;
var box_width = box.offsetWidth / 2;

box.style.top = myHeight - box_height + "px";
box.style.left = myWidth - box_width + "px";

function pop_up_show()
{
    box.style.visibility = 'visible';
}

function pop_up_hide()
{
    box.style.visibility = 'hidden';
}
</script>

<a href="java script: pop_up_show()">show</a>
<p><a href="java script: pop_up_hide()">hide</a></p>
Avatar billede w13 Novice
29. juli 2008 - 14:10 #10
Tak for point! :)
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