[JS] Parent opvragen

Pagina: 1
Acties:

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:17

André

Analytics dude

Topicstarter
Stel ik heb het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<div id="main">
    <div>
      <div></div>
    </div>
    <div></div>
</div>

<div id="sub">
    <div>
      <div></div>
    </div>
    <div></div>
</div>

Nu staan er op alle div's een onclick event die verwijzen naar Klik()
code:
1
2
3
4
function Klik()
{
  if (event.srcElement.id == "main") { bla }
}

Hoe vraag ik in Klik() op, op welke hoofd div er geklikt word (main of sub)?. Dus als ik op een willekeurige div klik moet hij uitzoeken of hij een child is van main of van sub. Ook al staat die div 100 levels diep genest.

Ik heb al iets geprobeert met parentElement en ParentNode, maar dat lukt me alleen als de div een rechtstreekse child is van main of sub.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:41

Pelle

🚴‍♂️

Met parentElement zit je in ieder geval wel in de goeie richting :)

Ik denk dat je even een recursieve functie moet schrijven, die net zo lang doorgaat met het opvragen van het parentElement, totdat hij ofwel main, ofwel sub heeft gevonden.

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:17

André

Analytics dude

Topicstarter
Op woensdag 08 mei 2002 13:08 schreef Pelle het volgende:
Met parentElement zit je in ieder geval wel in de goeie richting :)

Ik denk dat je even een recursieve functie moet schrijven, die net zo lang doorgaat met het opvragen van het parentElement, totdat hij ofwel main, ofwel sub heeft gevonden.
Misschien zoiets als dit?:
code:
1
2
3
4
5
tekst = ".parentElement";
while true {
  tekst += ".parentElement";
  if (eval("event.srcElement" + tekst).id == "main") { break }
}

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

Bosmonster

*zucht*

das niet echt lekker coden..

beter is zoiets:
code:
1
2
3
4
5
6
7
8
function getParent(obj,id){
    if(obj.parentElement.id == name) return obj.parentElement;
    else{
      var tmpObj = getParent(obj.parentElement, id);
      if(tmpObj) return tmpObj;
    }
    return null;
}

en dan in aanroep: parent = getParent(this, "main")

das meer recursief :)

edit:
wat netter gemaakt

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:41

Pelle

🚴‍♂️

Ik bedoelde meer iets als dit :)
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>find parent</title>
    <script language="javascript" type="text/javascript">
    <!--
      function findGreatGrandFather(obj) {
        if (obj.parentElement.id != "body") {
            findGreatGrandFather(obj.parentElement);
        } else {
            alert(obj.id);
        }
      }
    //-->
    </script>
</head>

<body id="body">


<div id="a">
    <div id="b">
      <div id="c">
        <div id="d" onClick="findGreatGrandFather(this);">dit is een child van a</div>
      </div>
    </div>
</div>

<div id="e">
    <div id="f">
      <div id="g">
        <div id="h" onClick="findGreatGrandFather(this);">en dit van e</div>
      </div>
    </div>
</div>


</body>
</html>

/edit
Bosmonster was eerder.. maar die heeft vakantie, das nie eerlijk ;)

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

Bosmonster

*zucht*

Op woensdag 08 mei 2002 13:26 schreef Pelle het volgende:
code:
1
2
3
4
5
6
7
      function findGreatGrandFather(obj) {
        if (obj.parentElement.id != "body") {
            findGreatGrandFather(obj.parentElement);
        } else {
            alert(obj.id);
        }
      }
Ow ja das ook makkelijk.. je kunt denk ik wel beter zoiets doen:
code:
1
2
3
4
5
6
7
function findGreatGrandFather(obj) {
    if (obj.parentElement != document.body) {
        findGreatGrandFather(obj.parentElement);
    } else {
        alert(obj.id);
    }
}

dan hoef je de body geen id te geven.. en is het weer wat "universeler" :P

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:41

Pelle

🚴‍♂️

Op woensdag 08 mei 2002 13:30 schreef Bosmonster het volgende:
dan hoef je de body geen id te geven.. en is het weer wat "universeler" :P
Heb je helemaal gelijk in.. maar misschien gaat Yogho z'n main en sub straks wel niet in de body nesten, maar in een aparte div.. nah ja, das allemaal geneuzel in de kantlijn verder eigenlijk :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:17

André

Analytics dude

Topicstarter
Op woensdag 08 mei 2002 13:32 schreef Pelle het volgende:

Heb je helemaal gelijk in.. maar misschien gaat Yogho z'n main en sub straks wel niet in de body nesten, maar in een aparte div.. nah ja, das allemaal geneuzel in de kantlijn verder eigenlijk :)
(Ja, ze gaan in de body genest worden.)

Bosmonster en Pelle dank, hier heb ik wat aan.

Verwijderd

Ik meen dat het in DOM parentNode is. Ik gebruik iig parentNode :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:17

André

Analytics dude

Topicstarter
Op woensdag 08 mei 2002 15:02 schreef Cheatah het volgende:
Ik meen dat het in DOM parentNode is. Ik gebruik iig parentNode :)
Klopt, maar in IE6 is de functie van parentNode veranderd. In de MSDN staat dat de parentNode naar zijn parent Atribuut verwijst of zo iets.
Pagina: 1