Avatar billede sjh Nybegynder
18. juni 2007 - 20:00 Der er 14 kommentarer og
1 løsning

forEach OOP (New function)

Hvordan gennemløber man en bestemt function ved navn, som er lavet sådan:

function Wow()
{
... mere kode ...
}

var obj = new Wow();

//--

Lige nu op samler jeg dem i et array når der oprettes en ny function, men syntes ikke det virker så smart.
Avatar billede roenving Novice
18. juni 2007 - 22:33 #1
Tjah, hvorfor ikke ?-)

-- men det er mere nødvendigt at vide, hvad det er for en slags objekter, og hvordan det er, at der er en stribe af dem !-)
Avatar billede sjh Nybegynder
18. juni 2007 - 22:51 #2
Ja det er fordi jeg skal udfør en kode før Submit, men der kan være flere OOP i samme form.. så lige nu op samler jeg OOP i et array og gennemløber dem..

rtfTextarea.Submits = new Array();

function rtfTextarea(Textarea, Option)
{
  var Me = this;

  .. mere kode ..

  if (this.hTextarea.form)
  {
    rtfTextarea.Submits[rtfTextarea.Submits.length] = Me; /* Me = this */
    this.hTextarea.form.onsubmit = function() {
      rtfTextarea.BeforSubmit();
    };
  }

  .. mere kode ..

};

rtfTextarea.BeforSubmit = function () {
  for (var i in rtfTextarea.Submits)
  {
    var Me = rtfTextarea.Submits[i];
    eval("Me.hTextarea.value=Me.hRtf.document.body.innerHTML");
  }
}; /* End BeforSubmit() */

Men det kunne måske gøres mere smart..
Avatar billede roenving Novice
18. juni 2007 - 22:59 #3
Bortset fra at du helt overflødigt bruger den endog allerdyreste javascript-funktion ressourcemæssigt og (ser det ud til !-) ideligt overskriver det samme felts værdi, skulle der ikke være noget galt ...

-- ret dog til:

  {
    var Me = rtfTextarea.Submits[i];
    Me.hTextarea.value = Me.hRtf.document.body.innerHTML;
  }
Avatar billede sjh Nybegynder
18. juni 2007 - 23:09 #4
Ja men den fejler ikke noget, det virker fint med eval() osv.. men jeg ville godt ha at jeg kunne gennemløbe dem uden at skulle op samle dem i et array..
Avatar billede olebole Juniormester
19. juni 2007 - 12:16 #5
<ole>

"Ja men den fejler ikke noget, det virker fint med eval()" ... Lyt dog, når kloge folk taler!  ;o)
Den linje kan næppe skrives ringere i JavaScript - og brugen af JS' langsommeste funktion savner enhver begrundelse.

- og til dit andet spørgsmål: Det kan du ikke. De objekter, du instantierer, må du lægge i et array, hvis du på et tidspunkt vil gennemløbe dem.
Til gengæld bør du bruge en alm. for-løkke, der er væsentlig hurtigere end for/in-løkken.

I øvrigt er OOP en programmerings måde - og forkortelsen står for Object Oriented Programming. OOP'er (hvad det så end er) kan man ikke samle i et array ... det kan man til gengæld med objekter  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
19. juni 2007 - 12:20 #6
- og så er der ingen af de gange, du bruger Me-variablen for this, at den er nødvendig. Det 'hack' bruger man f.eks. i callbacks - men her er der ikke grund til at bruge andet end this i disse situationer  =)
Avatar billede sjh Nybegynder
19. juni 2007 - 12:36 #7
Ok.. tak for tipet om for-løkke.. ;)

men det med Me er det navnet "Me" jeg ikke må bruge eller hvad, for jeg har nogle funktioner som jeg overfør "this" men den laver bare fejl hvis jeg ikke gemmer den i en variable først..??

Og så må i godt smide et par svar..
Avatar billede roenving Novice
19. juni 2007 - 13:15 #8
Brug af eval svarer sådan nogenlunde til, at du ringer efter et fejeblad for at få kørt dig selv og bilen, hvilket ville kunne være fornuftigt, hvis den ikke kunne køre og skulle på værksted, men er helt hen i vejret, hvis du bare skal på arbejde ...

Velbekomme '-)
Avatar billede sjh Nybegynder
19. juni 2007 - 13:33 #9
hmm det tip med for-løkke.. virker altså ikke serligt godt hos mig.. den springer nogle knapper over ??
Avatar billede olebole Juniormester
19. juni 2007 - 13:51 #10
Hvis this ikke virker, fremgår årsagen i hvertfald ikke af koden, du viser.
Dette kan ikke springe knapper over (med mindre, du laver fejl):

    for (var i=0,j=rtfTextarea.Submits.length; i<j; i++) {
        alert(rtfTextarea.Submits[i])
    }
Avatar billede sjh Nybegynder
19. juni 2007 - 14:02 #11
Ja.. nu var det godt nok et andet sted..

Her springer den nogle knapper over.. hvis jeg bruger for i..

  // for(var i=0;i<Bottons.length;i++)
  for (Botton in Bottons)
  {
    // var Botton = Bottons[i].toLowerCase();
    var Botton = Bottons[Botton].toLowerCase();

ellers prøv at se om der skulle være en anden fejl som gør det :
http://vbhansen.dk/rtfTextarea/demo/rtfTextarea.js
Avatar billede sjh Nybegynder
20. juni 2007 - 04:15 #12
ahh har fundet MIN fejl.. det var fordi jeg havede 2 andre loops inde i :D

Mange tak for hjælpen..
Avatar billede olebole Juniormester
20. juni 2007 - 11:03 #13
Selvtak. Nåede desværre ikke at kikke din kode igennem - men godt, du selv var vågen (eller blev det)  ;o)
Avatar billede sjh Nybegynder
20. juni 2007 - 11:35 #14
hæ hæ..
Avatar billede roenving Novice
20. juni 2007 - 16:08 #15
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