Autor Zpráva
Lavka
Profil
Dobrý den,
řeším tu několik dní takový problém týkající se nastavování CSSka javascriptem pomocí objektu získaného přes class. první uvedu HTML kód :

<div style="width: 600px;background-color: blue;" id="parent">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vitae odio et nibh tincidunt malesuada. Nullam semper magna eget est facilisis euismod. Ut non risus non nisi lobortis molestie. Suspendisse feugiat dui eget nulla tincidunt non posuere nisl pharetra. Vestibulum suscipit elementum velit, id tempus lectus aliquam vel. Nullam lectus felis, ultricies sit amet hendrerit eget, rutrum a eros. Maecenas rhoncus lobortis auctor. Suspendisse ultrices massa id nulla fermentum mattis.</div>
<div id="div_id" style="width: 600px;background-color: green;"></div>
<div class="div_class" style="width: 600px;background-color: red;"></div>
a následně javascript:
/*funkce prozískání objektu pomocí class*/
  function getElementsByClass(theClass){
    var elementArray = [];
        if (document.all){
          elementArray = document.all;
      }
      else{
          elementArray = document.getElementsByTagName("*");
      }
    var matchedArray = [];
     var pattern = new RegExp("(^| )" + theClass + "( |$)");

      for (var i = 0; i < elementArray.length; i++){
          if (pattern.test(elementArray[i].className)){
              matchedArray[matchedArray.length] = elementArray[i];
         }
        }
    return matchedArray;
     };
        
     /*získání výšky provního objektu*/
     var height = document.getElementById("parent").offsetHeight;
            
     /*přenesení víšky na objekt id*/    
     var div_id = document.getElementById("div_id");
     div_id.style.height=height;
        
      /*přenesení výšky na objekt class*/            
      var div_class = getElementsByClass("div_class");
      div_class.style.height=height;
Pokud si tento kód překopírujete zjistíte, že se zobrazí pouze zelený obdelník odpovídající velikosti modrého. Tento efekt byl proveden přes ukazatel getElementById(). Ovšem použitím funkce getElementsByClass() získáme také ukazatel (tentokrát na class). Problém nastává v tom, že na takový objekt mi nějak nechtějí fungovat metody které fungují u ukazatele na id (v tomto případě style).
Takže budu rád když mi někdo pomůže.
ShiraNai7
Profil
getElementsByClass() vrací pole s prvky, nikoliv jeden prvek, takže nastavení div_class.style.height = xxx by mělo skončit výjimkou, že div_class.style je null.

Možná takto:
var div_class = getElementsByClass("div_class");
for(i in div_class) {
  div_class[i].style.height=height;
}
Chamurappi
Profil
Reaguji na ShiraNaiho7:
Tento druh smyčky se na procházení polí nehodí, mohou se do ní připlést i metody rozšiřující Array.prototype.
Krom toho bych ještě dal var před i.
ShiraNai7
Profil
Lavka, Chamurappi:

var div_class = getElementsByClass("div_class");
for(var i = 0; i < div_class.length; ++i) {
  div_class[i].style.height=height;
}
Lavka
Profil
Velmi děkuji za odpovědi (postup se cyklem funguje)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: