[JS] prototyping: methods toevoegen aan document

Pagina: 1
Acties:

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:36

crisp

Devver

Pixelated

Topicstarter
Ik was dit aan het proberen om 1 methode te gebruiken en toch cross-browser de style van elementen aan te kunnen passen dmv prototyping:
code:
1
2
3
4
5
6
7
8
9
10
11
function _ChangeStyleElement(element, property, value) {

  if (document.getElementById) {
    eval('document.getElementById(\''+element+'\').style.'+property+' = \''+value+'\'');
  } else if (document.all) {
    eval('document.all[\''+element+'\'].style.'+property+' = \''+value+'\'');
  }

}

document.prototype.ChangeStyleElement = _ChangeStyleElement;

Dit werkt dus niet... :(
Ben ik nou zo dom dat ik het principe van prototyping nog niet helemaal snap? (zou zo kunnen)
Alternatief is natuurlijk om gewoon de functie aan te roepen, maar ik heb het idee dat prototyping efficienter is.

Intentionally left blank


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 11:03

Pelle

🚴‍♂️

Zou eigenlijk niet weten of je aan je document methods kunt toevoegen.. best interessant eigenlijk :)

M'goed, prototyping:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// object
function blaat(tekst) {
    this.tekst = tekst;
}

// method
function spreek() {
    alert(this.tekst);
}

// prototype definitie
melpverhaal   = blaat.prototype;
melpverhaal.spreek = spreek;

// en kijk eens:
blab = new blaat('mekkerdemekker');
blab.spreek();

Oftewel, je haalt je methods op een object uit je object definitie, is wat -naar ik begrepen heb- veel geheugen scheelt als je veel van die objecten wilt definieren.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

methods aan document toevoegen heb je geen prototype bij nodig :)
code:
1
2
3
4
5
6
7
document.eenFunctie = eenFunctie

function eenFunctie() {
   alert()
}

document.eenFunctie()

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:36

crisp

Devver

Pixelated

Topicstarter
Op donderdag 17 januari 2002 21:37 schreef Clay het volgende:
methods aan document toevoegen heb je geen prototype bij nodig :)
code:
1
2
3
4
5
6
7
document.eenFunctie = eenFunctie

function eenFunctie() {
   alert()
}

document.eenFunctie()
ok, maar in mijn geval kan ik dan net zo goed een functioncall gebruiken volgens mij.
Waar ik eigenlijk naar toe wil is dat ik het volgende kan doen:
code:
1
document.MyElement('blaat').style.visibility = 'visible';

Waarbij MyElement('blaat') dus synoniem is voor of getElementById('blaat') of voor all['blaat'].
Oftewel, kan ik dit prototypen met inheritance van de properties van de oorspronkelijke methods?

Intentionally left blank


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 11:03

Pelle

🚴‍♂️

Op donderdag 17 januari 2002 22:20 schreef crisp het volgende:
ok, maar in mijn geval kan ik dan net zo goed een functioncall gebruiken volgens mij.
code:
1
document.MyElement('blaat').style.visibility = 'visible';
Lijkt me ook veel handiger eigenlijk.
code:
1
2
3
4
5
6
7
function myElement(name) {
    if (document.getElementById) return document.getElementById(name);
    else if (document.all)   return document.all[name];
    else return;
}

myElement('blaat').style.color = '#ff0000';

Ik snap wel wat je bedoelt maar ik zie het nut er alleen (nog?) niet van in :) Vandaar dat ik dat soort ongein gewoon met normale functies oplos.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:36

crisp

Devver

Pixelated

Topicstarter
Ik heb mijn sources vol staan met crap als dit:
code:
1
2
3
4
5
6
7
8
9
10
11
  if (document.getElementById) {
    document.getElementById('playbutton').style.visibility = 'hidden';
    document.getElementById('stopbutton').style.visibility = 'visible';
    document.getElementById('focusbutton').style.visibility = 'visible';
    document.getElementById('puzzle').disabled = true;
  } else if (document.all) {
    document.all['playbutton'].style.visibility = 'hidden';
    document.all['stopbutton'].style.visibility = 'visible';
    document.all['focusbutton'].style.visibility = 'visible';
    document.all['puzzle'].disabled = true;
  }

Dat wil ik dus eenduidig maken...
Anyway, het werkt dus thankx!

Intentionally left blank


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 11:03

Pelle

🚴‍♂️

Op donderdag 17 januari 2002 22:52 schreef crisp het volgende:
Anyway, het werkt dus thankx!
Graag gedaan, enne:
Master of popups
ROFL :) 8-)
Pagina: 1