Hi,
Hat jemand Lust, die Funktion zusammenzufassen und einen Kurzartikel daraus zu machen? Muß nicht lang sein, nur endgültige, in den meisten Browsern funktionierende Funktion und Erklärung. Würde sich doch anbieten.
Hier erstmal mein letzter Stand für alle DOM-Level-2-Browser mit Kommentaren. Auf jeden Fall erscheint es mir noch sinnvoll, die Ermittlung des Startobjekts noch in der Funktion selber zu erledigen (also ggf. ID übergeben, und damit das Startobjekt ermitteln), anstatt ein Objekt selbst zu übergeben. Ob noch die proprietäre all-Variante reinkommt: mal sehen. Wenn ja, dann auch noch die "*"-Variante. Letztere kann zwar nichts "mehr", dürfte aber prinzipiell schneller sein, als eine JS-Rekursion.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Ermittle Attribut-Werte</title>
<script type="text/javascript"><!--
// Alle IDs ermitteln 050414
function getAttributeValues(attribName,startObj) {
// Lokale Variablen, attribute ist FALSE
var recursive, attribute=false;
// Funktion ueberhaupt moeglich?
if(attribName && document.getElementById) {
// Ist der ggf. uebergebene Parameter ein Objekt? Existiert es? Hat es einen Node-Namen? Wenn nicht: Das ganze Dokument
startObj=(typeof(startObj)=="object" && startObj && startObj.nodeType==1)?startObj:document.getElementsByTagName("body")[0];
// Rekursive Funktion fuer den DOM-Baum definieren
recursive=function(attribName,obj) {
// Durch den Baum hangeln
for(var i=obj.firstChild; i!=null; i=i.nextSibling) {
// Wenn Objekt ein Elementknoten ...
if(i.nodeType==1) {
// ... Attribut auslesen ...
attribValue=i.getAttribute(attribName);
// ... und sichern, falls es das Attribut gab und einen Wert hatte
if(attribValue) { attribute[attribute.length]=attribValue; }
// Weiter geht's
recursive(attribName,i);
}
}
}
// Start der Suche, falls der Browser firstChild kennt
if(startObj.firstChild) {
// attribute als Array definieren
attribute=new Array();
// Los geht's
recursive(attribName,startObj);
}
}
// Rueckgabe des Arrays oder von FALSE, falls der Browser zu alt ist
return attribute;
}
// Array per DHTML ausgeben 050414
function dumpArray(array,id) {
// Ist die Ausgabe moeglich, existiert der Ausgabebereich und hat das Array Inhalt?
if(document.getElementById && document.getElementById(id) && array.length) {
// Lokale Variablen, dump mit Listen-Tag vordefinieren
var i, dump="<ol>";
// Array durchlaufen und dump ergaenzen
for(i=0;i<array.length;i++) { dump+="<li>"+array[i]+"<\/li>"; }
// Abschluss mit dem Tag-Ende
dump+="<\/ol>";
// Liste in das Dokument schreiben
document.getElementById(id).innerHTML=dump;
}
}
//--></script>
</head>
<body onload="dumpArray(getAttributeValues('id'),'output');">
<div id="ID1"><span id="nextID">IDs</span>:
<div id="output"></div>
</div>
<div id="lastID"></div>
</body>
</html>
Gruß, Cybaer
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!