Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Cliccando su in elemento, sapere se è contenuto in un dato contenitore

    Dato un certo elemento, per esempio un <div id=div1, annidato dentro altri contenitori, è possibile sapere se è annidato dentro un contenitore di dato id?

    Pietro

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    <div onclick="if (this.parentNode != undefined) alert('Mio papà ha id ' + this.parentNode.getAttribute('id'))">

    Non l'ho provato ma dovrebbe funzionare così.
    Questo funziona se stai controllando il contenitore padre... se vuoi fare un controllo anche tra gli antenati serve una funzione differente

    Edit_: l'ho modificato.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    <div onclick="if (this.parentNode != undefined) alert('Mio papà ha id ' + this.parentNode.getAttribute('id'))">

    Non l'ho provato ma dovrebbe funzionare così.
    Questo funziona se stai controllando il contenitore padre... se vuoi fare un controllo anche tra gli antenati serve una funzione differente

    Edit_: l'ho modificato.
    Ti ringrazio allora sto pensando bene, perchè ho fatto una funzione ricorsiva sfruttando proprio il parentNode

    Pietro

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    <div onclick="checkIfParent(this, 'id_da_ricercare')"></div>

    codice:
    function checkIfParent(div, searchId) {
    
      var thisdiv = div;
      while (thisdiv.parentNode != undefined) {
        if (thisdiv.parentNode.getAttribute('id') == searchId) {
          alert(div +" è contenuto in "+ searchId);
          return true;
        }
        thisdiv = thisdiv.parentNode;
      }
      alert(div +" non è contenuto in "+searchId);
      return false;
    }
    Questo dovrebbe/potrebbe funzionare anche per cercare gli antenati... ma non ho provato nemmeno questo.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Interessante perchè non fa uso della ricorsione

    L'ho modificato così:
    codice:
    //---------------------------------------------------
    //restituisce true o false a seconda se elemento
    //sia contenuto nel contenitore di id = searchId
    //---------------------------------------------------
    function checkIfParent(elemento, searchId) 
    {
    	var thisdiv = elemento;
    	if(thisdiv.getAttribute('id') == searchId)
    	{
    		alert(elemento.id + " è " + searchId);
    		return true;
    	}
    	while (thisdiv.parentNode.tagName != undefined) 
    	{
    		if (thisdiv.parentNode.getAttribute('id') == searchId) 
    		{
    			alert(elemento.id + " è contenuto in "+ searchId);
    			return true;
    		}
    		thisdiv = thisdiv.parentNode;
    	}
    	alert(elemento.id + " non è contenuto in " + searchId);
    	return false;
    }
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.