• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Objekteigenschaften nach Kopieren in Array nicht mehr anpsrechbar

K

K.Beutler

Guest
Hallo,

wie allgmein bekannt existiert genau genommen noch keine Funktion "getElementsByClassName", bzw. manche Browser unterstützen diese Methode, andere nicht.. für meine Zwecke (ich benutze ein IE-ActiveX-Control für mein Programm) funktioniert es auf jeden Fall nicht.

Deshalb wollte ich mir diese Funktion selbst zusammenbasteln:
Code:
    function getElementsByClass(p_tag, p_class)
    {
      if(p_tag && p_class)
      {
        var elements = new Array();
        var tag_matches = document.getElementsByTagName(p_tag);
        for(var i = 0; i < tag_matches.length; i++)
        {
          if(tag_matches[i].className == p_class)
           elements.push(tag_matches[i]);
        }
      }

     return (elements.length > 0) ? elements : false;
    }

Wenn ich diese Funktion nun aufrufe, funktionert auch alles bestens:
Code:
var contents = getElementsByClass("p", "eine_klasse");
alert(contents[0].className);
Wenn ich nun jedoch versuche, auf die "style"-Eigenschaft dieses Elements zuzugreifen (contents[0].style), kommt eine Fehlermeldung nach dem Motto: "Die Eigenschaft "style" eines undefinierten oder Nullverweises kann nicht abgerufen werden"
Ich habe versucht, in der Funktion direkt per tag_matches[ i].style auf die Elemente zuzugreifen --> da kommt keine Fehlermeldung!! Aber sobald ich die Objekte per push() in das neue Array stecke, kann ich nicht mehr auf diese zugreifen (elements[ i].style --> Fehlermeldung!!)...

Kann mir da einer weiterhelfen?
lg
 
Werbung:
m.E. gibt es die Eigenschaft "style" doch garnicht... oder liege ich falsch?

theoretisch - wenn ich keinen denkfehler mache - müsste des doch so klappen:

var style = window.getComputedStyle(contents[0], null);
var width = style.getPropertyValue("width");
alert("width of Element:"+width);
 
m.E. gibt es die Eigenschaft "style" doch garnicht... oder liege ich falsch?

theoretisch - wenn ich keinen denkfehler mache - müsste des doch so klappen:

var style = window.getComputedStyle(contents[0], null);
var width = style.getPropertyValue("width");
alert("width of Element:"+width);
Ah, hab meinen Fehler gefunden... die Funktion an sich funktioniert wunderbar, ich habe es nur in der aufrufenden Funktion verbockt:
Code:
var contents = getElementsByClass("p", "meine_klasse");
for(i=0; i <= contents.length; i++)
contents[i].style.color = "red";
Das kleine aber feine Problem war das ("kleiner-gleich") <=... es sollte natürlich (kleiner) < lauten --> sonst wird ein Array-Element zu viel ausgelesen und das war dann der Nullverweis:rolleyes:

Aber zu deiner Anmerkung:
Ich verstehe das mit der "style"-Eigenschaft auch nicht...
Wenn ich unter der SELFHTML.org Objektreferenz von JS nachschlage, dann haben die Elemente (document.all) keine "style"-Eigenschaft. Jedoch wird diese Eigenschaft unter den Hauptobjekten als Unterobjekt von document.all aufgelistet... naja es funkioniert auf jeden Fall:cool:

Vielen Dank für den Support!
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Zurück
Oben