Minulla on taulukko jossa on soluilla määritetty eri nimiä. Pystyykö getElementsByName:lla muuttamaan kaikkien tietyn nimisten solujen tyyliä? Eli esim. kaikkiin <td name="solu1"> soluihin vaihtamaan taustan väriä?
En pysty selvittämään järkevästi solujen Id:tä, joten getElementsById:tä ei voi käyttää...
Eihän se funktio mitään muokkaa vaan hakee vain taulukollisen elementtejä. Voit sitten käydä tavallisella for-silmukalla ne elementit läpi ja tehdä jokaiselle saman muutoksen.
Pystyy ihan helpollakin, jos käyttää jotakin valmista kirjastoa. Itse tehtykin varmasti toimii, jos haluaa oppia miten se tehdään.
var haettavaNimi = "Solu1"; var saadut = document.getElementsByTagName("td"); for(a = 0; a < saadut.length; a++){ if(saadut[a].getAttribute("name") == haettavaNimi){ saadut[a].setAttribute("class", "punainen"); /* saadut[a].setAttribute("style:", backgroundColor: red;" */ } }
EDIT Jokohan se nyt osuis?
Kiitti, jos joku kaipaa, niin tuo kommentoitu rivi menee näin:
saadut[a].setAttribute("style", "background-color: #ff0000;");
Meikä on aika huono käyttämään mitään valmista. Itse tehty on aina itse tehty, niin hyvässä kuin pahassakin...
amuse kirjoitti:
Kiitti, jos joku kaipaa, niin tuo kommentoitu rivi menee näin:
saadut[a].setAttribute("style", "background-color: #ff0000;")
Minusta javascriptin kanssa ei saa käyttää väliviivaa, vaan jokainen nimenosa tulee kirjoitella isolla alkukirjaimella. Voin toki olla väärässäkin, mutta näin blazen kirjoittamassa oppaassa todetaan.
Teuro kirjoitti:
Minusta javascriptin kanssa ei saa käyttää väliviivaa, vaan jokainen nimenosa tulee kirjoitella isolla alkukirjaimella.
Tämä viittaa JS:n muuttujiin. Voisi nimittäin kirjoittaa myös elementti.style.backgroundColor = '#f00';
, jolloin tietenkin viiva tulkittaisiin miinusmerkiksi ja rivin merkitys muuttuisi aika radikaalisti.
Aihe on jo aika vanha, joten et voi enää vastata siihen.