Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: IE ja setAttribute

sane [14.12.2007 19:11:53]

#

Hei!

Minulla on ongelma IE:n kanssa. Yritän asettaa elementille attribuutteja seuraavan koodin mukaan:

div_menu.setAttribute('style', 'visibility:hidden; position:absolute; background-color:white;');
div_menu.setAttribute('id', 'div_menu_'+nr);
....
element.appendChild(div_menu);

Ongelmaksi muodostuu kuitenkin, kun IE developer toolsilla tarkastelee DOM koodia, näkyy tuolla elementillä ainoana attribuuttina tuo id, joten valikko ei ole piilossa, vaikka sen kuuluisi. Muilla selaimilla tämä toimii kuten kuuluukin. Eli onko kyseessä jokin IE:n ominaisuus ja pitäisi sitä varten leikkiä innerHTML kanssa, vai onko ongelma ratkaistavissa muutenkin?

sane [14.12.2007 20:14:16]

#

Okei, eli tuon sai kierrettyä:

div_menu.style.visibility='hidden';

edit:
Mutta eipä tuo IE silti kovin oikein näytä, ei esimerkiksi osaa suorittaa "onclick" attribuutilla määritettyjä tapahtumia, eikä muutenkaan näytä sivua kovinkaan oikealla tavalla. Oudointa tässä on se, että kopioitaessa tuon developer toolsin antama DOM-lähdekoodi uuteen tiedostoon, näyttää IE:kin kaiken aivan oikein.. Ihmeellistä toimintaa

Merri [14.12.2007 20:16:40]

#

IE:llä on ongelmia setAttributen joidenkin arvojen kanssa, mm. class/className ja for/forHTML on ongelmallisia tapauksia. Joudut käyttämään suoraan style, mutta sen sijaan suosittelen vaan asettamaan className:n ja pistämään CSS-tyylit CSS-tiedostoon.

div_menu.className = 'menuhidden';


.menuhidden {
visibility : hidden;
position : absolute;
background-color : #FFF;
}

Minusta JavaScriptillä on ok säätää styleä lähinnä silloin kun tekee esim. animointeja tai testivaiheessa. Jos on status a, status b ja status c, niin sitten on käytännöllisempää antaa CSS:n hoitaa homma kotiin.

Tietty, jos tässä säädetään vaan yhtä arvoa (visibilityä), niin sitten se ei ehkä ole ihan niin paha.

sane [14.12.2007 20:32:52]

#

Kiitoksia. Tuo .classNamen avulla säätäminen näköjään auttaa tuohon oikein näkymiseen. Enää jää siis ongelmaksi IE:ssä dynaamisesti lisättyjen elementtien "onclick" attribuutti, eli sitä ei osata suorittaa. Olen sen lisännyt seuraavalla tavalla:

div_selected.setAttribute('onclick', 'menu_action(\'div_menu_'+nr+'\', \'search_box_'+nr+'\')');

Pystyykö tuota lisäämään mitenkään muuten?

Merri [14.12.2007 20:36:47]

#

div_selected.onclick = function() { /* koodinpätkä tähän */ }

Huomioitavaa on, että sinun täytyy keksiä tapa löytää nr, koska sinne ei periydy mistään arvoja. this viittaa elementtiin itseensä, joten sillä tavoin voit kyllä id:n saada selville getAttributella. Toisaalta, riippuen menu_actionin koodistasi sen voinee siirtää kokonaisuudessaan tuohon onclickiin.

sane [14.12.2007 20:48:01]

#

Kiitoksia, täytyypä perehtyä tuon muodostamiseen. Siihen siis tarvii aina luoda uusi funktio, jonne ei saa mitenkään periytymään mitään arvoja?

edit: vastaan taas itse itselleni, eli kyllä tuo nr näköjään toimii myös tuolla funktion sisällä.. Vois opetella kokeilee ennenku kysyy:)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta