[JS] events op eigen object? hoe?

Pagina: 1
Acties:

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Zie paar posts naar onderen: hoe kan ik events toepassen op eigengemaakte objecten en een referentie van het object meesturen?

[opgelost]
Als ik met window.screen.width of window.screen.availWidth de breedte van mijn scherm bepaal, is dit de breedte van het hele scherm, maar hoe krijg ik alleen het te gebruiken stuk? Idem voor hoogte...
[/opgelost]

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:33

Pelle

🚴‍♂️

Zo:
code:
1
2
alert(document.body.offsetWidth);
alert(document.body.offsetHeight);

/edit
Typo :z

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

er zijn vele breedtes in je browser te vinden.

als ik t zou moeten zeggen zou ik ff kijken op www.w3schools.com :)

disjfa - disj·fa (meneer)
disjfa.nl


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

disjfa:
er zijn vele breedtes in je browser te vinden.
Ja, en vele graspollen in het veld. Daarnaast moet je natuurlijk niet vergeten om effe te googlen op stalmest
als ik t zou moeten zeggen zou ik ff kijken op www.w3schools.com :)
:{ :Z

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

Op donderdag 04 juli 2002 16:46 schreef drm het volgende:

[..]

Ja, en vele graspollen in het veld. Daarnaast moet je natuurlijk niet vergeten om effe te googlen op stalmest
[..]

:{ :Z
gaat het weer een beetje? :P

hier staat een nette opsomming van de mogelijkheden mbt browserwindow manupilatie..

www.jurgroessen.nl


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Kee die heb ik...

Maar nu ik toch een topic open heb:
Waarom werkt dit niet en is er uberhaupt een workaround voor met niet veel meer code?:
code:
1
this.onmousedown = this.doeDit();

Hij geeft 'not implemented', terwijl de prototype functie doeDit wel gemaakt is...
Het probleem is dat als ik een
code:
1
2
3
4
this.mousedown = function(e)
{
  doeDitBuitenHetObjectModelOm(this);
}

maak dat this niet gedefinieerd is omdat this alleen binnen de object-structuur een waarde heeft. Een counter maken heeft ook geen zin, want ik weet niet hoe ik aan een id moet komen, want die zit aan 'this' vast |:(
Op donderdag 04 juli 2002 16:57 schreef Hangloozz het volgende:

hier staat een nette opsomming van de mogelijkheden mbt browserwindow manupilatie..
Dus zo komt Clay aan zijn kleuren voor de JS tut :D

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

Op donderdag 04 juli 2002 16:46 schreef drm het volgende:

[..]

Ja, en vele graspollen in het veld. Daarnaast moet je natuurlijk niet vergeten om effe te googlen op stalmest
[..]

:{ :Z
ja... maar daar staat t wel :z

disjfa - disj·fa (meneer)
disjfa.nl


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
en weer ontopic, anders kap ik er zo weer mee en blijft het weken liggen totdat ik weer zin erin heb...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Limhes:
en weer ontopic, anders kap ik er zo weer mee en blijft het weken liggen totdat ik weer zin erin heb...
:D sorry :{ ;)
</offtopic>
Limhes:
Waarom werkt dit niet en is er uberhaupt een workaround voor met niet veel meer code?:
code:
1
this.onmousedown = this.doeDit();
Afgezien van het feit dat je die () achter doeDit wel weg kan halen (sterker nog, weg _moet_ halen)

this.onmousedown... waar doe je die verwijzing?
Hij geeft 'not implemented', terwijl de prototype functie doeDit wel gemaakt is...
Het probleem is dat als ik een
code:
1
2
3
4
this.mousedown = function(e)
{
  doeDitBuitenHetObjectModelOm(this);
}

maak dat this niet gedefinieerd is omdat this alleen binnen de object-structuur een waarde heeft.
Wat voor object structuur is dat? Zou je daar even wat meer source van kunnen laten zien.
Een counter maken heeft ook geen zin, want ik weet niet hoe ik aan een id moet komen, want die zit aan 'this' vast |:(
Als het een eigen objectstructuur is, kun je het in de constructor doen. Maar dat is het niet, gok ik :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Je weet het mooi te vertellen drm :P

Maar volgens mij kun je gewoon

body.onmousedown = doeIets;

body heeft wel de events, window (this) niet. (Tenzij die het inderdaad in een ander object had staan natuurlijk...)

Verwijderd

Dit overzichtje is altijd heel handig vink zelf dan :)

http://msdn.microsoft.com/workshop/author/om/measuring.asp

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

Clay

cookie erbij?

ik vond dat ik laatst hier wel een aardige oplossing voor document events gepost heb, maar die is toen helaas ondergesneeuwd. Het sloeg dan wel op onloads, maar het werkt op zich overal voor, met een kleine aanpassing ook op layers.

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


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Op donderdag 04 juli 2002 17:14 schreef drm het volgende:
Wat voor object structuur is dat? Zou je daar even wat meer source van kunnen laten zien.
Bij deze (wel eigen creatie trouwens):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function dynBlock(zooi variabelen)
{
  this.id = document.blocks.length;
  document.blocks[this.id] = this;
  this.build();
}

  dynBlock.prototype.build = function()
  {
    // window initialisatie
    this.parent = document.createElement("div");

    // titlebar initialisatie
    this.titlebar = document.createElement("div");
    this.titlebar.onmousedown = this.startDrag;
    this.titlebar.onmousemove = this.drag;
    this.titlebar.onmouseup = this.stopDrag;
    this.titlebar.appendChild(document.createTextNode("lala"));

    // appenden aan window
    this.parent.appendChild(this.titlebar);

    bodyRef.appendChild(this.parent);
  }

  dynBlock.prototype.startDrag = function(e)
  {
    activeObj = this;
  }

  dynBlock.prototype.stopDrag = function()
  {
    activeObj = null;
  }

  dynBlock.prototype.drag = function(e)
  {
    if (e) event = e;
    if (activeObj)
    {
    // hier worden event.clientX en Y afgevangen en verwerkt in de vorm:
    activeObj.parent.style.left = X+"px";
    }
  }


function init()
{
  document.blocks = [];
  bodyRef = document.getElementsByTagName("body").item(0);
  window1 = new dynBlock();
}

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:33

Pelle

🚴‍♂️

Titel op verzoek aangepast :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je zal het een statisch aanroepbare functie moeten maken, ajbwib.

Ik denk dat als je 't zo doet:
code:
1
2
3
4
5
6
// titlebar initialisatie
    this.titlebar = document.createElement("div");
    this.titlebar.onmousedown = document.blocks[this.id].startDrag;
    this.titlebar.onmousemove = document.blocks[this.id].drag;
    this.titlebar.onmouseup = document.blocks[this.id].stopDrag;
    this.titlebar.appendChild(document.createTextNode("lala"));

Je er wel een eind mee komt...

edit:
* drm heeft er nog even mee zitten kloten...
Ik krijg het idd ook niet voor elkaar om events te prototypen...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Op vrijdag 05 juli 2002 09:57 schreef drm het volgende:
[code
this.titlebar.onmousedown = document.blocks[this.id].startDrag;
[/code]

Ik krijg het idd ook niet voor elkaar om events te prototypen...
Nee want volgens mij vindt hij dat this.id staat voor window.id...
Clay moet toch wel kunnen helpen :?

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

Clay

cookie erbij?

* Clay moet beter lezen :P
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<html>
<head>
<style type="text/css">

#fietsDiv { 
    position:absolute; 
    left:50; top:50; width:200; height:200; 
    background-color:red;
}

</style>
<script>

function fiets() {
    this.div = document.getElementById('fietsDiv');
    this.div.fiets = this; // <-- referentie naar obj
    
    this.div.onmousedown = function() {
        // this == div, dus this.fiets == obj
        this.fiets.bel();
    }
}

fiets.prototype.bel = function() {
    alert('tring tring!')
}

</script>
</head>

<body onload="new fiets()">


<div id="fietsDiv">
[ FIETS ]
</div>

</body>
</html>

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


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Thnx!!!

Kga het strakjes ff uitproberen.

.edit: het werkt eindelijk! Thnx allemaal...
Pagina: 1