J'essaie de boucler sur TOUS les éléments d'une page. Je souhaite donc vérifier chaque élément de cette page pour une classe spéciale.
Alors, comment dire que je veux vérifier CHAQUE élément?
J'essaie de boucler sur TOUS les éléments d'une page. Je souhaite donc vérifier chaque élément de cette page pour une classe spéciale.
Alors, comment dire que je veux vérifier CHAQUE élément?
Vous pouvez passer une *
de getElementsByTagName()
, de sorte qu'il sera de retour tous les éléments dans une page:
var all = document.getElementsByTagName("*");
for (var i=0, max=all.length; i < max; i++) {
// Do something with the element here
}
Notez que vous pouvez utiliser querySelectorAll()
, si elle est disponible, il suffit de trouver les éléments avec une classe particulière.
if (document.querySelectorAll)
var clsElements = document.querySelectorAll(".mySpeshalClass");
else
// loop through all elements instead
Ce serait certainement accélérer les choses pour les navigateurs modernes.
Je cherchais pareil. Eh bien, pas exactement. Je voulais seulement lister tous les nœuds DOM.
var currentNode,
ni = document.createNodeIterator(document.documentElement, NodeFilter.SHOW_ELEMENT);
while(currentNode = ni.nextNode()) {
console.log(currentNode.nodeName);
}
Pour obtenir des éléments avec une classe spécifique, nous pouvons utiliser la fonction de filtrage.
var currentNode,
ni = document.createNodeIterator(
document.documentElement,
NodeFilter.SHOW_ELEMENT,
function(node){
return node.classList.contains('toggleable') ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
}
);
while(currentNode = ni.nextNode()) {
console.log(currentNode.nodeName);
}
Solution trouvée sur MDN
Hear est un autre exemple de la manière dont vous pouvez parcourir un document ou un élément //
function getNodeList(elem){
var l=new Array(elem),c=1,ret=new Array();
//This first loop will loop until the count var is stable//
for(var r=0;r<c;r++){
//This loop will loop thru the child element list//
for(var z=0;z<l[r].childNodes.length;z++){
//Push the element to the return array.
ret.push(l[r].childNodes[z]);
if(l[r].childNodes[z].childNodes[0]){
l.push(l[r].childNodes[z]);c++;
}//IF
}//FOR
}//FOR
return ret;
}
de ce lien
référence javascript
<html>
<head>
<title>A Simple Page</title>
<script language="JavaScript">
<!--
function findhead1()
{
var tag, tags;
// or you can use var allElem=document.all; and loop on it
tags = "The tags in the page are:"
for(i = 0; i < document.all.length; i++)
{
tag = document.all(i).tagName;
tags = tags + "\r" + tag;
}
document.write(tags);
}
// -->
</script>
</head>
<body onload="findhead1()">
<h1>Heading One</h1>
</body>
</html>
MISE À JOUR: EDIT
depuis ma dernière réponse, j'ai trouvé une solution plus simple et meilleure
function search(tableEvent)
{
clearResults()
document.getElementById('loading').style.display = 'block';
var params = 'formAction=SearchStocks';
var elemArray = document.mainForm.elements;
for (var i = 0; i < elemArray.length;i++)
{
var element = elemArray[i];
var elementName= element.name;
if(elementName=='formAction')
continue;
params += '&' + elementName+'='+ encodeURIComponent(element.value);
}
params += '&tableEvent=' + tableEvent;
createXmlHttpObject();
sendRequestPost(http_request,'Controller',false,params);
prepareUpdateTableContents();//function js to handle the response out of scope for this question
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.