[HTC] Wijzigen property van andere objecten

Pagina: 1
Acties:

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
Hallo,

Ik ben sinds een tijdje bezig met HTC componenten, zodat mijn code nog beter leesbaar wordt en makkelijker te onderhouden.
Nu wil ik het volgende.
Op een pagina heb ik 10 knoppen staan. Deze hebben allemaal highlight functies OnMouseOver en als de muis weg is, krijgt de knop weer de normale kleur. Nu wil ik echter dat je, als je op een knop drukt, dat de highlight blijft, zodat de gebruiker makkelijk ziet welke knop ingedrukt is.
Probleem is echter dat je, als je dit wilt, wel moet checken of er geen andere knoppen aanstaan. Die wil ik dus uitzetten middels de properties die die knoppen hebben.

Ik heb de volgende broncode
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<span class="clsKnop" style="behavior: url(knop.htc);" id="knpCol">
    Knop 1
</span>
<span class="clsKnop" style="behavior: url(knop.htc);" id="knpCol">
    Knop 2
</span>
<span class="clsKnop" style="behavior: url(knop.htc);" id="knpCol">
    Knop 3
</span>
<span class="clsKnop" style="behavior: url(knop.htc);" id="knpCol">
    Knop 4
</span>


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
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onclick" ONEVENT="OnClick()" />
<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="aan()" />
<PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="uit()" />

<PUBLIC:PROPERTY NAME="klik">
    <GET INTERNALNAME="getKlik" />
    <PUT INTERNATNAME="putKlik" />
<PUBLIC:PROPERTY />

<script language="JScript">
var bGeklikt;

function OnClick()
{
    var oSpan   = parent.document.getElementsByTagName('span');

    for(var i = 0; i != oSpan.length; i++)
    {
        if((oSpan[i].className).toLowerCase() == 'clsknop' && oSpan[i] != element)
        {
            oSpan[i].putKlik(false);
            oSpan[i].uit();
        }
    }
    putKlik(true);
}

function aan()
{
    element.style.color = '#000000';
}

function uit()
{
    if(!bGeklikt)
    {
        element.style.color = '#FFFFFF';
    }
}

function getKlik()
{
    getKlik = bGeklikt;
}

function putKlik(b)
{
    bGeklikt = b;
}
</script>
</PUBLIC:COMPONENT>


Het is alleen niet mogelijk om in regels 22 en 23 properties van andere objecten aan te passen. Weet iemand wat ik verkeerd doe?
msdn.microsoft.com/library, Google, GoT Search en W3schools kunnen me hier niet mee helpen. :'( Of, ik krijg het daar niet gevonden.

Alvast bedankt voor de hulp.

| Life is a game (and games are fun) | homepage |


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

En als je oSpan[i]. in die 2 regels weghaalt dan?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:06

crisp

Devver

Pixelated

JavaScript:
1
var oSpan    = parent.document.getElementsByTagName('span');

parent? :?

Intentionally left blank


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
@crisp
parent omdat je in een ander document zit. Het HTML bestand is de parent van de HTC. vandaar.

@André
Als je de oSpan[i] weghaalt, dan worden de putKlik(false) en uit() functies van het huidige element aangeroepen. Ik wil de public functies aanroepen van de andere knoppen, dus vandaar.

| Life is a game (and games are fun) | homepage |


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

akakiwi schreef op 21 juli 2004 @ 11:14:
Als je de oSpan[i] weghaalt, dan worden de putKlik(false) en uit() functies van het huidige element aangeroepen. Ik wil de public functies aanroepen van de andere knoppen, dus vandaar.
Maar die andere knoppen hebben geen public functies, dus dat kan niet :)

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
De andere knoppen hebben ?GEEN? public functies?
Of jij moet beter kijken, want elke span heeft die knop.htc behavior en dus ook de bijbehorende public functies. ;)

Of.... ik heb de HTC componenten nog niet goed door en daardoor ook het verschil tussen public functies van objecten niet :(
Volgens mij is het namelijk zo dat er voor een htc bestand voor elk object waar het aan wordt gehangen apart geheugenruimte wordt gereserveerd. De objecten delen dus niet "hetzelfde" bestand, omdat het, als er 10 objecten zijn die er gebruik van maken, 10 keer voorkomt in het geheugen.

Of denk ik te moeilijk??

| Life is a game (and games are fun) | homepage |


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Even zonder te reageren: er zit een typefout in de volgende regel.
code:
1
<PUT INTERNATNAME="putKlik" />

[ Voor 9% gewijzigd door André op 21-07-2004 11:29 ]


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
@André
Je had daar wel gelijk in. Ik heb INTERNATNAME veranderd in INTERNALNAME, maar dat mocht helaas niet baten.

| Life is a game (and games are fun) | homepage |


Verwijderd

Kun je niet ipv
code:
1
2
3
4
<PUBLIC:PROPERTY NAME="klik">
    <GET INTERNALNAME="getKlik" />
    <PUT INTERNATNAME="putKlik" />
<PUBLIC:PROPERTY />

dit:
code:
1
2
<PUBLIC:METHOD NAME="getKlik" />
<PUBLIC:METHOD NAME="putKlik" />

en ipv parent.document gebruikte ik altijd window.document, maar dat maakt kennelijk weinig uit hier.

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
Dank je voor de hint in de goede richting Martijn22.
Wat ik heb gedaan is het volgende
code:
1
2
3
4
5
6
7
8
<PUBLIC:METHOD NAME="getKlik" />
<PUBLIC:METHOD NAME="putKlik" />
<PUBLIC:METHOD NAME="zetUit" />

function zetUit()
{
     uit();
}


function uit bestond al, maar dan als EVENT.

Het werkt nu!! :)
Dank je.

| Life is a game (and games are fun) | homepage |

Pagina: 1