Avatar billede ballegaarden Nybegynder
08. januar 2012 - 19:16 Der er 19 kommentarer og
1 løsning

fejl i script

Er der en der kan være mig behjælplig med et problem med mit script.
Mit mouseover billede ligger sig bag ved siden.

http://www.caramia.dk/kunst-skulptur.html
Avatar billede olebole Juniormester
08. januar 2012 - 19:34 #1
<ole>

Begynd med at indsætte en DTD som det allerførste i dokumentet. Ellers giver det ikke mening at forsøge sig med CSS:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

Derefter fjerner du det ene billede med id="BigImage" og FONT tagget, der omkranser BigImage og scriptet.

Så kan du skrive:

#BigImage{
display:none;
position:absolute;
z-index: 100;
border:1px solid #000;
}

Så burde du være sikker på, det lægger sig øverst.

/mvh
</bole>
Avatar billede olebole Juniormester
08. januar 2012 - 19:39 #2
- og så bør man altid skrive valid kode, hvis man ønsker siden vist, som man forventer - og nogelunde ens i forskellige browsere.

Du kan se, hvilke fejl din side indeholder her. Dem bør du nok få rettet  =)
Avatar billede ballegaarden Nybegynder
08. januar 2012 - 19:43 #3
Supert, det virker - TAK
Avatar billede olebole Juniormester
08. januar 2012 - 20:02 #4
Selvtak. Da jeg ikke samler point, accepterer du bare dit eget svar, så tråden lukkes  =)
Avatar billede ballegaarden Nybegynder
08. januar 2012 - 22:07 #5
Tak, men jeg har desværre et lille spørgsmål mere.
For når jeg kommer længere ned på siden med billederne, forsvinder det store billede op oven ud.
Hvordan får jeg alle billeder til at åbne sig der hvor musemarkøren er og blive der, selv om jeg kører skærmen længere ned.
Avatar billede olebole Juniormester
09. januar 2012 - 15:13 #6
Nu har jeg ikke kikket på selve dit mouseoverscript, men der hvor du sætter left og top for billedet, skal du kompensere med document.documentElement.scrollLeft og document.documentElement.scrollTop, som afspejler, hvor meget siden er scrollet
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 16:01 #7
Nej ikke den, den har jeg også prøvet.
Jeg vil gerne have billedet åbner lige ved muse makøren hele tiden, men når jeg går længere ned på siden med billederne flytter det store billede sig længere op på siden.

http://www.caramia.dk/kunst-skulptur.html


<SCRIPT type="text/javascript">
function ShowBigImage(image) {
var BigImage = document.getElementById("BigImage");
BigImage.setAttribute("src",image);
}
function MoveBigImage(x, y) {
var BigImage = document.getElementById("BigImage");
BigImage.style.display = "block";
BigImage.style.left = (x+10) + "px";
BigImage.style.top = (y-200) + "px";
if (BigImage.offsetLeft + BigImage.offsetWidth > document.getElementsByTagName("body")[0].offsetWidth) {
BigImage.style.left = BigImage.offsetLeft - BigImage.offsetWidth - 50 + "px";
}
}
function HideBigImage() {
document.getElementById("BigImage").style.display = "none";
}
</SCRIPT>
Avatar billede olebole Juniormester
09. januar 2012 - 16:56 #8
"Nej ikke den, den har jeg også prøvet." >> Det forstod jeg ikke lige  =)
Avatar billede olebole Juniormester
09. januar 2012 - 17:00 #9
Læg mærke til min første kommentar i #1! Du kan ikke forvente at få noget til at virke uden en valid DTD, som sætter IE i standard complient mode. Store og meget vigtige dele af CSS er diabled i dit dokument, når du ikke bruger en DTD.

Hvis mit forslag fra #6 ikke virker for dig, er den manglende DTD helt sikkert årsagen  *o)
Avatar billede olebole Juniormester
09. januar 2012 - 17:02 #10
Du kan sådan set godt undlade DTD'en og i stedet bruge document.body.scrollLeft og document.body.scrollTop - men så virker det kun i IE. Skal det virke i alle browsere, skal du bruge DTD'en
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 17:28 #11
Øh der stod jeg lige af, måske fordi jeg er ved at løbe træt.
Er det rigtigt jeg sætter det ind, for billederne sætter sig øverst i vinduet og følger ikke musen.

Den med DTD'en var en smutter da jeg kopierede det ind i koderne.
Men selv om jeg fik den sat i virker det ikke rigtigt desværre.

<SCRIPT type="text/javascript">
function ShowBigImage(image) {
var BigImage = document.getElementById("BigImage");
BigImage.setAttribute("src",image);
}
function MoveBigImage(x, y) {
var BigImage = document.getElementById("BigImage");
BigImage.style.display = "block";
document.body.scrollLeft = (x+10) + "px";
document.body.scrollTop = (y-200) + "px";
if (BigImage.offsetLeft + BigImage.offsetWidth > document.getElementsByTagName("body")[0].offsetWidth) {
BigImage.style.left = BigImage.offsetLeft - BigImage.offsetWidth - 50 + "px";
}
}
function HideBigImage() {
document.getElementById("BigImage").style.display = "none";
}
</SCRIPT>
Avatar billede olebole Juniormester
09. januar 2012 - 17:48 #12
Du bruger det et forkert sted, og når du bruger DTD skal du bruge documentElement - uden skal du bruge body.

Prøv noget i stil med:


<script type="text/javascript">
function ShowBigImage(image) {
    var BigImage = document.getElementById("BigImage");
    BigImage.setAttribute("src",image);
}
function MoveBigImage(x, y) {
    var BigImage = document.getElementById("BigImage");
    BigImage.style.display = "block";
    BigImage.style.left = (x+document.documentElement.scrollLeft) + "px";
    BigImage.style.top = (y-document.documentElement.scrollTop) + "px";
    if (BigImage.offsetLeft + BigImage.offsetWidth > document.getElementsByTagName("body")[0].offsetWidth) {
        BigImage.style.left = BigImage.offsetLeft - BigImage.offsetWidth - 50 + "px";
    }
}
function HideBigImage() {
    document.getElementById("BigImage").style.display = "none";
}
</script>


Læg i øvrigt mærke til min indrykning af koden. Stil din kode pænt op - ellers får du en frygtelig ballade med at vedligeholde den  *o)
Avatar billede olebole Juniormester
09. januar 2012 - 17:49 #13
- og koden forudsætter, at du bruger en DTD
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 18:28 #14
DTD der mener du den jeg glemte - ikke?:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><HTML>

Den er med nu, men nu det er dårlige end det var før.
Jeg har kopieret scriptet ind som du har skrevet.
Den bliver engentlig en lille smugle bedre uden DTD'en

http://www.caramia.dk/kunst-skulptur.html
Avatar billede olebole Juniormester
09. januar 2012 - 18:43 #15
Ups ... der skal selvfølgelig lægges til  :D

BigImage.style.top = (y+document.documentElement.scrollTop) + "px";

- og så er det stadig godt at validere koden hos W3C. Du afslutter f.eks. ikke dit HTML element
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 21:00 #16
Ja det hjalp sørme!

Men så har jeg kun en sidste ting. Før kunne jeg difinerer hvor det store billedet skulle være i forhold til musen, for nu hvor billedet ligger sig så tæt oppe i venstre hjørne, forsvinder billedet nogen gange neden ud. Det er bedst at billedet er ca midt for markøren og lige en smugle fra, for så blinker billedet ikke så meget ved en lille bevægelse.

Kan du også klare den, så er du en guttermand :-)
Avatar billede olebole Juniormester
09. januar 2012 - 22:12 #17
Du kan lægge lidt ekstra offset på med:

BigImage.style.top = (y+document.documentElement.scrollTop+50) + "px";

- eller hvad du nu synes passer. Og det samme gør du med left værdien.

Problemet med 'blinkere' opstår, fordi du laver mouseout på det faste billede og mouseover på det store, når du flytter musen hurtigt i retning af det store.

Skal du skrive dig ud af det på anden måde, bliver det ret komplekst - og det er måske bedre at vente lidt med det  =)
Avatar billede olebole Juniormester
09. januar 2012 - 22:13 #18
Du kan selvfølgelig også bruge en negativ værdi og altså trække noget fra (flytte op eller til venstre)
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 22:30 #19
tusind tak for den store hjælp, nu virker det som det skal
Avatar billede olebole Juniormester
09. januar 2012 - 23:44 #20
Kanon - og selv tak  *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

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