Auslesen von Knoten aus einer XHTML-Datei

enrix

Mitglied
Hallo,

ich habe ein Problem beim auslesen von Knoten aus einer XHTML Datei. Undzwar lasse ich mir einen Knoten namens listbox über den Befehl
document.getElementsByName() zurückgeben.

PHP:
var list = document.getElementsByName("listbox")[0];

In diesem Knoten befinden sich Unterknoten die das Attribut name="tab" beinhalten. Diese Attribute möchte ich mir zurückgeben lassen aber statt das gesmte dokument anzusprechen möchte ich nur die eben referenzierte liste wählen.

PHP:
var tab= list.getElementsByName("tab");

nun habe ich erwartet, dass der Variable tab ein Array zurückgegeben wird mit allen Knoten die das entsprechende name-attribut beinhalten. Leider klappt das nicht. Wie kann ich das realisieren?
 
Moin,

was für Elemente sind dies mit diesem name-Attribute?

Nicht alle HTML-Elemente dürfen ein name-Attribut haben.
getElementsByName() findet nur jene Elemente, welche lt. DTD auch ein name-Attribut haben dürfen, also bspw. <form>, alle Formularelemente,<a>,<img>,<iframe>...(und sicher noch ein paar andere, bin jetzt zu faul nachzuschauen :-))
 
das sind ul-Tags denen ich das name-Attribute zugewiesen habe. Ich habe zuvor document.getElementsByClassName verwendet. diese Methode hat auf den Anwendungsfall im Firefox und Safari funktioniert aber nicht im Internet Explorer.
 
Hi,

die Methode getElementsByName ist dem document-Objekt zugeordnet und keinen untergeordneten Knoten. Aus diesem Grund wird der aufruf im Kontext eines Knotens immer fehlschlagen.

Versuche stattdessen zum Beispiel eine eigene getElementsByClassName zu implementieren.

Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function getElementsByClassName(objRoot, strClassName){
  var arrRet = [];
  var arrElem = (document.all && !window.opera)? objRoot.all : objRoot.getElementsByTagName("*");
  var strPattern = new RegExp(strClassName);

  for(var i=0; i<arrElem.length; i++){
    if(arrElem[i].className.search(strPattern)!=-1)
      arrRet[arrRet.length] = arrElem[i];
  }

  return arrRet;
}

window.onload = function(){
  var arrClass = getElementsByClassName(document.getElementsByTagName("ul")[0], "name");
  var strOut = "";
  for(strKey in arrClass)
    strOut += strKey + " = " + arrClass[strKey].innerHTML + "\n";
  alert(strOut);
}
 //-->
</script>
</head>
<body>
<ul>
  <li class="name">Eins (Name)</li>
  <li>Zwei</li>
  <li class="drei name tester">Drei (Name)</li>
  <li>Vier</li>
  <li class="fuenf name">Fünf (Name)</li>
</ul>
</body>
</html>

Die Funktion erwartet zwei Parameter:
1. objRoot - Element, von dem aus die Elemente mit dem Klassenname aus dem zweiten Argument ermittelt werden sollen
2. strClassName - Klassenname nach dem gesucht werden soll

Ciao
Quaese
 

Neue Beiträge

Zurück