Les commentateurs ci-dessus notent des méthodes scriptaculeuses pour ce faire, mais il est toujours utile de savoir comment effectuer une manipulation DOM de base de cette manière sans béquilles. Ce code est non testé mais certainement très proche de ce que vous voulez utiliser:
/**
* Finds the ancestor div element of descendantDiv which has one of
* the given array of ids. If multiple div elements have with the
* given ids are ancestors of descendantDiv, the most closely related
* one (i.e. parent preferred to grandparent) is returned. If no
* ancestor of descendantDiv is a div element with one of the ids
* given by ids, returns null.
*
* @param descendantDiv : HTMLDivElement
* the div element whose containing div with one of the provided
* ids is to be determined
* @param ids : [string]
* array of ids which the desired ancestor div might have
* @returns HTMLDivElement
* the first parent, grandparent, etc. div element of descendantDiv
* which has an id contained in ids
*/
function findAncestorDivWithId(descendantDiv, ids)
{
for (var parent = descendantDiv.parentNode;
parent;
parent = parent.parentNode)
{
if (parent.nodeName.toLowerCase() !== "div")
continue;
for (var i = 0, sz = ids.length; i < sz; i++)
{
if (parent.id === ids[i])
return parent;
}
}
return null;
}
Wow! Merci, il me semble que j'ai besoin de vérifier w3schools pour une grosse feuille de triche de toutes les capacités DOM intégrées. Je commence juste à me mouiller les pieds avec Javascript. –