Avatar billede gnyff Nybegynder
06. september 2001 - 22:34 Der er 18 kommentarer og
2 løsninger

Lidt hjælp til drop down

Hejsa

Ja, jeg er ikke særlig skarp til javascript, så jeg har været ude og stjæle lidt kode. Men jeg bliver ved med at få en fejlmeling på en stump kode i min js fil.

Er der nogen af jer der kan hjælpe mig?

Koden:

function makePageCoords(){
    this.x=0;this.x2=(bw.ns4 || bw.ns5)?innerWidth:document.body.offsetWidth-20;
    this.y=0;this.y2=(bw.ns4 || bw.ns5)?innerHeight:document.body.offsetHeight-5;
    this.x50=this.x2/2;    this.y50=this.y2/2;
    return this;

Før denne kode har jeg fået en til at hjælpe mig med at læggge noget javascript ind i mit html dokument, så dropdown menuen hele tiden er i toppen selv om man scroller ned.

Håber i kan hjælpe mig
Avatar billede nikolajdu Nybegynder
06. september 2001 - 22:37 #1
Umiddelbart mangler der en } nederst.

Anyway mangler vi lidt beskrivelse af hvilken fejl? Er det objektet eller hvad??
Avatar billede gnyff Nybegynder
06. september 2001 - 22:42 #2
Øhhh, den er der desværre.

Der hvor den siger at:
Fejl: et objekt er oblikatorisk
Kode: 0
Avatar billede nikolajdu Nybegynder
06. september 2001 - 22:43 #3
Du henviser til this, men der står ingen steder hvilket objekt this tilhører.

Prøv med

function makePageCoords(navnet){
    this.x=0;this.x2=(bw.ns4 || bw.ns5)?innerWidth:document.body.offsetWidth-20;
    this.y=0;this.y2=(bw.ns4 || bw.ns5)?innerHeight:document.body.offsetHeight-5;
    this.x50=this.x2/2;    this.y50=this.y2/2;
    return this;
}

Og på din menu skal du så have en name=\"navn1\" og næste name=\"navn2\"
Avatar billede gnyff Nybegynder
06. september 2001 - 22:52 #4
Øhhh, jeg bliver nød til at vende tilbage i morgen, jeg sidder men øjende under føderne.
Avatar billede nikolajdu Nybegynder
06. september 2001 - 22:54 #5
Oki doki. Anyway ville noget mere kode hjælpe.

Der var dog en lille detalje. Men du bør lige fortælle hvad den stump gør...
Avatar billede jakoba Nybegynder
06. september 2001 - 22:54 #6
Jeg tror den funktion er beregnet på at blive kaldt med et  new  foran:

var etallerandetnavn = new makePageCoords( );

men det er ikke til at sige bestemt uden at se mere af koden.

kan du lægge siden på nettet og så poste et link her?

mvh JakobA
Avatar billede roenving Novice
07. september 2001 - 01:27 #7
Jamen (min umiddelbare reference var ikke så effektiv, så det er et spørgsmål):

innerWidth og innerHeight er jo properties, dem kan man da ikke referere til uden at angive et objekt ???·|

Altså:

function makePageCoords(navnet){
    this.x=0;this.x2=(bw.ns4 || bw.ns5)?window.innerWidth:document.body.offsetWidth-20;
    this.y=0;this.y2=(bw.ns4 || bw.ns5)?window.innerHeight:document.body.offsetHeight-5;
    this.x50=this.x2/2;    this.y50=this.y2/2;
    return this;
}

hth
jes
Avatar billede roenving Novice
07. september 2001 - 03:43 #8
>>Og gnyff

Når du får en fejlmelding, så kunne det måske gøre det hurtigere at hjælpe, hvis du mere præcis angav fejlmeddelelsen, i hvert fald hvilken linje og hvilken fejlmeddelelse (brug eks. Microsofts javascript-debugger: Åeh ... den findes på microsoft.com, men hvis man ikke bruger 73½ dag til at lede finder man den aldrig, hvor er den dog ???)

Jamen er det dog ikke herligt at have firmaer som mikro$aft til at styre ens verden !!!·|
Avatar billede gnyff Nybegynder
07. september 2001 - 14:17 #9
Jeg har prøvet at finde en debugger, men uden noget heldigt resultat. Jeg har dog på mit arbejde kørt denne side gemmen en debugger og har fundet fejlen i denne stump kode.

Denne stump kode sidder i en js fil, der er meget lang, men i kan da få noget af den, her er ca en 3 del af den.



function checkBrowser(){
    this.ver=navigator.appVersion
    this.dom=document.getElementById?1:0
    this.ie5=(this.ver.indexOf(\"MSIE 5\")>-1 && this.dom)?1:0;
    this.ie4=(document.all && !this.dom)?1:0;
    this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
    this.ns4=(document.layers && !this.dom)?1:0;
    this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
    return this
}
var bw=new checkBrowser()

var explorerev=\'\'

function makePageCoords(oMenu){
    this.x=0;this.x2=(bw.ns4 || bw.ns5)?innerWidth:document.body.offsetWidth-20;
    this.y=0;this.y2=(bw.ns4 || bw.ns5)?innerHeight:document.body.offsetHeight-5;
    this.x50=this.x2/2;    this.y50=this.y2/2;
    return this;
}
function makeMenu(parent,obj,nest,type,num,subnum,subsubnum){
    nest=(!nest) ? \'\':\'document.\'+nest+\'.\'
      this.css=bw.dom? document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+\"document.layers.\" +obj):0;                   
    this.evnt=bw.dom? document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+\"document.layers.\" +obj):0;       
    this.height=bw.ns4?this.css.document.height:this.evnt.offsetHeight
    this.width=bw.ns4?this.css.document.width:this.evnt.offsetWidth
    this.moveIt=b_moveIt; this.bgChange=b_bgChange;   
    this.clipTo=b_clipTo;
    this.parent=parent;
    this.active=0;
    this.nssubover=0
    if(type==0){
        this.evnt.onmouseover=new Function(\"mmover(\"+num+\",\"+this.parent.name+\")\");
        this.evnt.onmouseout=new Function(\"mmout(\"+num+\",\"+this.parent.name+\")\");
    }else if(type==1){
        this.clipIn=b_clipIn;
        this.clipOut=b_clipOut;
        this.clipy=0
        if((bw.ns5 || bw.ns4) && this.parent.menueventoff==\"mouse\"){
            this.evnt.onmouseout=new Function(\"setTimeout(\'if(!\"+this.parent.name+\"[\"+num+\"].nssubover)\"+this.parent.name+\".hideactive(\"+num+\");\',100)\")
            this.evnt.onmouseover=new Function(this.parent.name+\"[\"+num+\"].nssubover=true\")
        }
    }else if(type==2){
        this.evnt.onmouseover=new Function(\"submmover(\"+num+\",\"+subnum+\",\"+this.parent.name+\")\");
        this.evnt.onmouseout=new Function(\"submmout(\"+num+\",\"+subnum+\",\"+this.parent.name+\")\");
    }else if(type==3){
        this.evnt.onmouseover=new Function(\"subsubmmover(\"+num+\",\"+subnum+\",\"+subsubnum+\",\"+this.parent.name+\")\");
        this.evnt.onmouseout=new Function(\"subsubmmout(\"+num+\",\"+subnum+\",\"+subsubnum+\",\"+this.parent.name+\")\");
    }
    this.tim=100
    this.obj = obj + \"Object\";     eval(this.obj + \"=this\")   
    return this
}
function b_clipTo(t,r,b,l,h){if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r
this.css.clip.bottom=b;this.css.clip.left=l; this.clipx=r;
}else{this.css.clip=\"rect(\"+t+\",\"+r+\",\"+b+\",\"+l+\")\"; this.clipx=r;;
if(h){ if(!bw.ns4){ this.css.height=b; this.css.width=r}}}}
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y}
function b_bgChange(color){if(bw.dom || bw.ie4) this.css.backgroundColor=color;
else if(bw.ns4) this.css.bgColor=color}
function b_clipIn(speed){
    if(this.clipy>-speed){
        this.clipy-=speed
        if(this.clipy<0) this.clipy=0
        this.clipTo(0,this.clipx,this.clipy,0,1)
        this.tim=setTimeout(this.obj+\".clipIn(\"+speed+\")\",10)
    }else{this.clipy=0; this.clipTo(0,this.clipx,this.clipy,0,1)}   
}
function b_clipOut(speed){
    if(this.clipy<this.clipheight+10){
        this.clipy+=speed
        this.clipTo(0,this.clipx,this.clipy,0,1)
        this.tim=setTimeout(this.obj+\".clipOut(\"+speed+\")\",10)
    }else{this.clipy=this.clipheight+10; this.clipTo(0,this.clipx,this.clipy,0,1)} 
}

var page=new makePageCoords()


function checkp(num,lefttop){
    if(num){
        if(num.toString().indexOf(\"%\")!=-1){
            if(this.menurows)num=(page.x2*parseFloat(num)/100)
            else num=(page.y2*parseFloat(num)/100)
        }else num=parseFloat(num)
    }else num=0
    return num
}
Avatar billede roenving Novice
07. september 2001 - 14:26 #10
>>gnyff

var page=new makePageCoords()

kalder uden parameter, men funktionen har en parameter -- der må være opstået en fejl !!

function makePageCoords(oMenu){
    this.x=0;this.x2=(bw.ns4 || bw.ns5)?innerWidth:document.body.offsetWidth-20;
    this.y=0;this.y2=(bw.ns4 || bw.ns5)?innerHeight:document.body.offsetHeight-5;
    this.x50=this.x2/2;    this.y50=this.y2/2;
    return this;
}

hth
jes
Avatar billede gnyff Nybegynder
07. september 2001 - 14:30 #11
Ja, det parameter jeg har sat ind, hvilket gør at den slet ikke virker *snøft*
Avatar billede roenving Novice
07. september 2001 - 14:35 #12
Hvad sker der, hvis du fjerner oMenu fra funktionen, som jo også er beregnet til at finde nogen vindues-koordinater for et nyt menuitem (oMenu er jo heller ikke refereret i funktionen, så den kan da ikke være vigtig !!·)
Avatar billede gnyff Nybegynder
07. september 2001 - 14:38 #13
Når jeg fjerner den melder den fejl som før, nemlig i linie 18 tejn 11, som er den anden linie i den første stump jeg lagde ind
Avatar billede jakoba Nybegynder
07. september 2001 - 14:38 #14
Den kode du viser ser fin ud.

Vi har et problem her. Der er ALT ALT for mange mulige ting der kan være problemet.
1) du har ikke de rette name=\'rammenavn\' parametre i dit frameset
2) en variabel eller funktion i dette script hedder det samme som noget i det andet script.
3) der er en initieringsfunktion der ikke bliver aktiveret.
4) du henter et stylesheet lige før en af din <script tags hvor du henter en .js fil.
5) du har brugt et reserveret ord som navn et sted (der er adskillige navne der KUN må bruges af javascript. fx kan man ikke lave en variabel der hedder \'if\')
6) alt mulig andet jeg ikke lige kan komme i tanke om.

mvh JakobA
Avatar billede gnyff Nybegynder
07. september 2001 - 14:42 #15
Er det så ikke nemmere at lave en helt ny?

For jeg fatter ikke en skid af det der står der, så langt er jeg slet ikke noget endnu :o)
Avatar billede jakoba Nybegynder
07. september 2001 - 14:47 #16
Jo det er nok en god ide.
mange menyer er \'pakket ind\' så der blot er en .js fil du skal inkludere (og for guds skyld ikke pille i) og et simpelt forman hvor du skriver de menypunkter du vil have og de adresser de skal linke til.

hvor er det nu brattas coolmenus ligger for tiden?

mvh JakobA
Avatar billede roenving Novice
07. september 2001 - 14:52 #17
>>spør\' du jakoba ??
www.dhtmlcentral.com
Avatar billede jakoba Nybegynder
07. september 2001 - 15:01 #18
Jep. (vidste jeg kunne regne med dig :-))
Avatar billede roenving Novice
07. september 2001 - 15:03 #19
;~]
Avatar billede gnyff Nybegynder
07. september 2001 - 15:14 #20
jakoba>> Sjovt nok, du har hjulpet mig før da det drejede sig om javascript.

Så jeg håber du blander dig i samtalen når jeg spørger næste gang *.O)

Men tak for tiden til jer alle sammen, det for i lidt point for :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