Avatar billede jammerlab Nybegynder
05. april 2004 - 13:25 Der er 33 kommentarer og
2 løsninger

Laver ved action

Jeg sider og koder i PHP, og har brug for et layer jeg kan kalde frem når der for eksempel kommer en bruger online... dette layer skal så forsvinde efter 5 sekunder hvis brugeren ikke selv lukket det. Det ville være en nice effekt hvis det kunne glide op... altså ligsom animeret frem, og ikke bare dukker frem :)
Avatar billede roenving Novice
05. april 2004 - 13:27 #1
Hvordan vil klienten vide, at der er kommet en mere på serveren ?-)
Avatar billede jammerlab Nybegynder
05. april 2004 - 13:29 #2
Formålet er til en body liste... jeg har fået den til at alarmere med en alert så det fungere sådan set fint :) Nu vil jeg bare kælde for detaljerne og lave det som et layer istedet for... og hvis der skulle logge en på lige efter den anden... jamen... så må der bare dukke 2 frem vel? :P
Avatar billede roenving Novice
05. april 2004 - 13:39 #3
En layer, som dukker frem er jo 'bare' en div med position:absolute, som skifter tilstand fra display:none til block ...

-- og du kan også f.eks. få den til at slide op et eller andet sted ved at udnytte clip og ændre det langsomt, jeg ville kigge f.eks. på www.dynamicdrive.com eller www.javascript.com, der må du kunne finde et godt eksempel !-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 13:56 #4
roenving>> kan du være lidt mere specifik angående det layer? Har ikke så meget styr på hidden osv.
Avatar billede roenving Novice
17. april 2004 - 14:28 #5
Prøv følgende som en html-fil:

<style type="text/css">
html,body{height:100%;margin:0px;padding:0px;font-family:verdana,arial,sans-serif;}
#divAlert{position:absolute;display:none;width:200px;height:100px;background:#9E8B1D;color:silver;font-weight:900;padding:2px 5px;}
</style>

<script type="text/javascript">
function showAlert(){
  d = document.getElementById('divAlert').style;
  d.left = (document.body.offsetWidth-222) + 'px';
  d.top = (document.body.offsetHeight-105) + 'px';
  d.display = (d.display!='block')?'block':'none';
}
</script>

<div id="divAlert">Dette er en meddelelse !-)</div>
<br><button onclick="showAlert();">Vis/skjul meddelelse</button>
Avatar billede jammerlab Nybegynder
17. april 2004 - 14:40 #6
Ja det ser jo fint ud... hvordan gør jeg så noget PHP så if($noget) { vis } og selvf. if($noget) { skjul } så det ikke sker pr. button klik.
Avatar billede roenving Novice
17. april 2004 - 15:14 #7
Du skal have noget client-side, som kan udløse det, så der, hvor du skriver din alert, sætter du i stedet et kald til showAlert() ...

-- og da du sikkert vil ændre lidt i teksten kunne man f.eks.

<script type="text/javascript">
function showAlert(txt){
  d = document.getElementById('divAlert')
  d.innerHTML=txt;
  d = d.style;
  d.left = (document.body.offsetWidth-222) + 'px';
  d.top = (document.body.offsetHeight-105) + 'px';
  d.display = (d.display!='block')?'block':'none';
}
</script>

Hvor du så skriver:

showAlert('Den tekst, som skal alertes'); i stedet for:

alert('Den tekst, som skal alertes');
Avatar billede jammerlab Nybegynder
17. april 2004 - 15:21 #8
Hehe det fungere også fint, men hvorlede skjuler jeg den så nu? Vi har ikke en function som hedder hideAlert :)
Avatar billede roenving Novice
17. april 2004 - 15:28 #9
...
  d.top = (document.body.offsetHeight-105) + 'px';
  d.display = 'block';
  setTimeout("document.getElementById('divAlert').style.display='none'",3000);//3 sek.
}
Avatar billede jammerlab Nybegynder
17. april 2004 - 15:32 #10
Lækkert... så fungere det da... så skal jeg bare bruge nogle lækkre effekter som bevægelse eller fade... noget du lige har et link til? Hvis ik så takker jeg ihvertfald for denne gang :) og smid så et svar for engang skyld! :)
Avatar billede jammerlab Nybegynder
17. april 2004 - 16:16 #11
åh roenving hvorfor skal der altid være problemer når man prøver at implementere koden ?! :/

Jeg har sat dette i min head.php

<script type="text/javascript">
function showAlert(txt){
  d = document.getElementById('divAlert')
  d.innerHTML=txt;
  d = d.style;
  d.left = (document.body.offsetWidth-222) + 'px';
  d.top = (document.body.offsetHeight-105) + 'px';
  d.display = (d.display!='block')?'block':'none';
  setTimeout("document.getElementById('divAlert').style.display='none'",3000);//3 sek.
}
</script>

dette i min refresh.php

if($row3[note2] == "1") {
echo "<script>showAlert('Den tekst, som skal alertes');</script>";
}

og dette i min slut.php

<div id=\"divAlert\" class=divAlert></div>

og fejlen den kommer med er som følgende:

Line: 12
Char: 1
Error: Object expected
Code: 0
og det er så i refresh.php fejlen forkommer.
Avatar billede roenving Novice
17. april 2004 - 16:26 #12
Ligger head.php og refresh.php i samme window-objekt eller i forskellige ?-)

-- hvis refresh f.eks. er en iframe i head.php skal du bruge parent.showAlert() ...

-- og du skal ikke sætte class på div'en, fordi indstillingerne jo kun skal gælde for den, så det er hensigtsmæssigt at bruge id til formattering ( #divAlert{} !-)

-- og sæt så type på dit script-tag:

echo "<script type='text/javascript'>showAlert('Den tekst, som skal alertes');</script>";

-- els velbekomme '-)
Avatar billede roenving Novice
17. april 2004 - 16:26 #13
;O)
Avatar billede jammerlab Nybegynder
17. april 2004 - 16:33 #14
ok refresh.php er i et iframe som kommer efter head.php

mine filer er bygget op på følgende måde:

<?php require 'head.php';?>
<?php require 'start.php';?>
lala
<?php require 'slut.php';?>

hvis jeg ændre den i refrsh til

if($row3[note2] == "1") {
echo "<script type='text/javascript'>parent.showAlert('Den tekst, som skal alertes');</script>";
}

så for jeg en fejl i den fil jeg benytter

'd' is null or not an object
Avatar billede jammerlab Nybegynder
17. april 2004 - 16:34 #15
og iframe ligger altså så i start.php ;)
Avatar billede jammerlab Nybegynder
17. april 2004 - 16:53 #16
Prøvede med echo "<script type='text/javascript'>parent.location.showAlert('Den tekst, som skal alertes');</script>";

men så for jeg bare "Object doesent support this porperty or method"
Avatar billede roenving Novice
17. april 2004 - 17:10 #17
Du skal i hvert fald ikke have fat i location, da det er et selvstændigt objekt uden tilknytning til html-siden iøvrigt ...

-- og koden skal ligge på den html-side hvor div'en ligger, altså så head-php f.eks. kunne indeholde den _efter_ et body-tag ...
Avatar billede jammerlab Nybegynder
17. april 2004 - 17:12 #18
Haha fik du lige slået engelsk tastatur til?! :D
Avatar billede roenving Novice
17. april 2004 - 17:13 #19
Nej, jeg fik åbenbart ikke en ordentlig forbindelse ...

Alle æøå i resten af teksten var japanske eller kinesiske bogstaver !-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 17:15 #20
okaaay :P Kan du så ikke lige oversætte? For den kontrol skal befinde sig i refresh.php som er i iframe... og det div skal dukke op i slut.php da det er der mit layer skal placeres... hvad kan jeg så gøre?
Avatar billede roenving Novice
17. april 2004 - 17:32 #21
div og javascript-kode skal være i samme html-dokument ...

Hvis så kaldet skal komme fra et andet dokument i en iframe, så er det udgaven med parent, du skal bruge:

echo "<script type='text/javascript'>parent.showAlert('Den tekst, som skal alertes');</script>";
Avatar billede jammerlab Nybegynder
17. april 2004 - 17:37 #22
Refresh.php
-----------
if($row3[note2] == "1") {
echo "<script type='text/javascript'>parent.showAlert('Den tekst, som skal alertes');</script>";
}

Slut.php
--------
<script type="text/javascript">
function showAlert(txt){
  d = document.getElementById('divAlert')
  d.innerHTML=txt;
  d = d.style;
  d.left = (document.body.offsetWidth-222) + 'px';
  d.top = (document.body.offsetHeight-105) + 'px';
  d.display = (d.display!='block')?'block':'none';
  setTimeout("document.getElementById('divAlert').style.display='none'",3000);//3 sek.
}
</script>
<div id=\"divAlert\" class=divAlert></div>

og intet i min head.php for følgende fejl:

'd' is null or not an object
Avatar billede roenving Novice
17. april 2004 - 17:48 #23
Hvordan ser det ud, når du prøver at kigge på det via 'Vis kilde' ?-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 18:06 #24
http://212.242.60.87/hotornot/

hvis du logger ind med test/test

Systemet fungere sådan at den kun kontrollere hvis man er logget ind... den skulle gerne vise layer med det samme, men den laver som sagt den fejl :)
Avatar billede olebole Juniormester
17. april 2004 - 18:07 #25
<ole>

Selvom PHP prøver at rette op på fejlen - og gætte, hvad du mener - er det dårlig kodeskik ikke at sætte gåseøjne ved kald i arrays: $row3["note2"]  :)

Derudover, skal du nok fjerne dine escapes:
  <div id="divAlert" class="divAlert"></div>

/mvh
</bole>
Avatar billede olebole Juniormester
17. april 2004 - 18:09 #26
PS: Det er det sidste, der giver fejl - men du bør absolut også rette det første ... og vænne dig til det fremover  ;o)
Avatar billede jammerlab Nybegynder
17. april 2004 - 18:10 #27
Ja det så sq ud til at gøre trikket @.@
Avatar billede roenving Novice
17. april 2004 - 18:10 #28
I koden er den jo også:

<div id=\"divAlert\" class=divAlert></div>

Fjern de backslashes !-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 18:18 #29
Sorry ;) Mig der jo lige copy pastede uden at tænke mig om hehe :) men tak begge 2... jeg regner ikke med olebole har noget med roenving render med de point :)
Avatar billede roenving Novice
17. april 2004 - 18:19 #30
Tjah, man kan jo aldrig vide ?-)

-- men velbekomme '-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 18:22 #31
oh lige en sidste ting... hvorfor kan jeg ikke give min div en class?
Avatar billede roenving Novice
17. april 2004 - 18:29 #32
Det kan du da også, men i det eksempel jeg lavede havde jeg stylet den udfra id'et (#divAlert{}), når det, som i dette tilfælde er en unik forekomst af en samling style-properties giver det mere mening at bruge den slags unik styling end at oprette en class og sætte style på (.divAlert{}), da forcen ved at bruge class netop er, at man kan benytte den på forskelligfe elementer ...

Men det er fuldt lovligt at oprette classes til et hvilkensomhelst element, jeg ville bare lade være, fordi det vil hjælpe mig til at gennemskue hvilke styles, der går igen på flere elementer og hvilke, som kun findes på et eneste !-)
Avatar billede jammerlab Nybegynder
17. april 2004 - 18:34 #33
Puha fattede jeg ikke meget af hehe :) men det fungerede fint da jeg ændrede # til . så tak for denne gang nu slutter vi altså af her ;) Tak begge 2 for jeres tid.
Avatar billede roenving Novice
17. april 2004 - 18:42 #34
Man kan lave selektorer ud fra 3 forskellige niveauer:

div{} /* gælder for _alle_ div-elementer */
.minClass{} /* gælder for alle elementer med class="minClass" */
#minId{} /* gælder _kun_ for det ene element, som har id="minId" */

-- at der kan kombineres meget mere er ikke relevant her, men det kan du jo eftersøge, hvis/når du får behov derfor !-)

-- og tak for points ;~}
Avatar billede olebole Juniormester
17. april 2004 - 20:01 #35
Nejnej ... det er fint med mig  ;o)
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging