document.all.tags

kesnw

Erfahrenes Mitglied
Hi,

ich möchte alle divs selektieren die einen Text beinhalten.

Ich möchte Also folgendes heruasfiltern:

Code:
<div class="test">Hallo<br>blablabla</div>

und folgendes weglassen:

Code:
<div allign="right">blabla</div>

Also aus:

Code:
var divs = document.all.tags("div");

soetwas wie

Code:
var classdivs = document.all.tags("div class='text'");

Ist soetwas möglich? Wenn nicht mit document.all.tags, mit was dann
 
Zuletzt bearbeitet:
Original geschrieben von kesnw

Code:
<div class="test">Hallo<br>blablabla</div>

und folgendes weglassen:
Code:
<div allign="right">blabla</div>

Hallo,

beide Div´s haben Textnodes, von daher kannst du sie nicht unterscheiden. Wenn du den Div, welche "rein" sollen, einen namen gibst (oder irgendwie anders identifizierbar machst) , dann sollte es kein Problem sein, ansonsten siehts schlecht aus. Ich würde dann aber den Weg über document.getElementsByName() evtl in kombination mit document.getElementsByTagName() gehen.

bye und viel Erfolg
Andreas

//edit: kleines Beispiel
Code:
<html>
<head>
  <script type="text/javascript">
  function getDiv(){
      var divs = document.getElementsByName('ok');
      alert("es sind "+divs.length+" Divs gespeichert");
      for(x=0;x<divs.length;x++){
          alert("div "+x+" = "+divs[x].firstChild.data);
      }
  }
  </script>
</head>
<body>
<div name="ok">BLA1</div>
<div>BLA0</div>
<div name="ok">BLA2</div>
<div name="ok">BLA3</div>

<a href="#" onclick="getDiv(); return false">getDivs</a>
</body>
</html>
 
Zuletzt bearbeitet:
Funktioniert leider nicht, denn mit document.getElementsByName grift er nicht auf den Namen des Tags zu sondern auf den Tag selbst, also wieder auf alle divs...

Ich müsste nur auf das erste vorkommende div zugreifen, wie geht das?

Code:
var divs = document.getElementsByName('text')[0];

geht leider nicht...
 
Original geschrieben von kesnw
Funktioniert leider nicht, denn mit document.getElementsByName grift er nicht auf den Namen des Tags zu sondern auf den Tag selbst, also wieder auf alle divs...
Nein, document.getElementsByName speichert die objekte mit dem entsprechenden Name Attribut (nicht Tagname). Wenn du sagst, alle <div>`s die gespeichert werden sollen, bekommen den namen "ok" - und nach diesen Namen suchst du dann mit getElementsByName, dann hast du kein Problem. Identische Namen dürfen ja öfters vergeben werden... Du kannst auch sagen, jedes DIV Element mit der Class="text" soll in einem Array gespeichert werden. Dann musst du erst mit document.getElementsByTagName('div') alle divs speichern und dann mir einer if Abfrage in einer Scheife diese Elemente durchgehen, also ungefähr so:
Code:
var elements = new Array();
var divs = document.getElementsByTagName('div');
for(var x= 0; x<divs.length; x++){
  if(divs[0].className =='text'){
    elements.push(divs[x].firstCild.data);
  }
}

Ich müsste nur auf das erste vorkommende div zugreifen, wie geht das?
Code:
var divs = document.getElementsByName('text')[0];

geht leider nicht...
Doch geht :) - allerdings wird dir so nur "object" zurückgeliefert. Wenn du den Inhalt des Objekts willst musst du es so ansprechen:
document.getElementsByName('ok')[0].firstChild.data

bye
 

Neue Beiträge

Zurück