OSDN Git Service

fix get_elemnets_* to not find itsef
authorHiromichi MATSUSHIMA <hirom@office-sv.osdn.jp>
Mon, 1 Aug 2011 10:59:38 +0000 (19:59 +0900)
committerHiromichi MATSUSHIMA <hirom@office-sv.osdn.jp>
Mon, 1 Aug 2011 10:59:38 +0000 (19:59 +0900)
htmltree.py

index d29a066..dad28dd 100644 (file)
@@ -202,7 +202,8 @@ class HTMLElement(list):
     # basic query functions
     def get_elements_by_name(self, name):
         buf = []
-        self._r_get_elements_by_name(name, buf)
+        for i in self:
+            i._r_get_elements_by_name(name, buf)
         return buf
 
     def _r_get_elements_by_name(self, name, buf):
@@ -212,9 +213,9 @@ class HTMLElement(list):
             i._r_get_elements_by_name(name, buf)
 
     def get_element_by_id(self, id):
-        if "id" in self.attrs and self.attrs["id"] == id:
-            return self
         for i in self:
+            if "id" in i.attrs and i.attrs["id"] == id:
+                return i
             e = i.get_element_by_id(id)
             if e != None:
                 return e
@@ -223,7 +224,8 @@ class HTMLElement(list):
 
     def get_elements_by_class(self, cls):
         buf = []
-        self._r_get_elements_by_class(cls, buf)
+        for i in self:
+            i._r_get_elements_by_class(cls, buf)
         return buf
 
     def _r_get_elements_by_class(self, cls, buf):
@@ -276,6 +278,8 @@ class HTMLElement(list):
             results = [elem.get_element_by_id(pat[1:]),]
         elif pat[0] == ".":
             results = elem.get_elements_by_class(pat[1:])
+        else:
+            results = elem.get_elements_by_name(pat)
         return [x for x in results if x]
 
     def select_1st(self, expr):