Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zanimljivo - Dinamička uslovna promena stilova

[es] :: Javascript i AJAX :: Zanimljivo - Dinamička uslovna promena stilova

[ Pregleda: 1914 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Zanimljivo - Dinamička uslovna promena stilova24.04.2004. u 00:42 - pre 243 meseci
Primer 1.
Citat:
<div id="jedan">jedan</div>

Ako ovom elementu želimo da promenimo boju teksta dinamički - malo javascripta:

document.getElementById ('jedan').style.color = '#00f';


<div id="dva" style="color: #00f;">dva</div>

Ako element već ima plavi tekst, neka postane crven, inače neka bude plav:

var divId = 'dva';
var divStyle = document.getElementById (divId).style;
divStyle.color = divStyle.color == '#00f' ? '#f0f' : '#00f';


Ako se plavi tekst ne definiše u tagu već u CSS elementu ili fajlu:

#tri {color: #00f;}

<div id="tri">tri</div>

var divId = 'tri';
var divStyle = document.getElementById (divId).style;
divStyle.color = divStyle.color == '#00f' ? '#f0f' : '#00f';

... ne dobija se isti rezultat !

Niže je kod sličnog primera, predlažem da ga preuzmete i poigrate se malo da vidimo postoji li odgovor na pitanje:

- Kako pročitati inicijalnu vrednost atributa stila elementa koja nije zadana inline?

... naravno, ako već znate odgovor, dajte za početak neki hint. Ako odgovor ne znate, svako mišljenje na temu "u kome grmu čuči zeka" je dobrodošlo.

Primer 2.
Code:
<html>
<head>
<title>style object</title>
<style>
div
{
    margin: 1% 10%;
    padding: 1%;
    background-color: #ccc;
    border: thick outset #999;
    font: xx-large monospace;
    font-weight: bold;
    color: #f00;
    text-align: center;
}
#id0
{
    display: block;
}
#id1
{
    display: none;
}
</style>
<script>
toggleDivsStyleDisplay = function ()
{
    var divs = document.getElementsByTagName ('div');
    var divStyle;
    for (var i = 0; i < divs.length; i++)
    {
        divStyle = divs [i].style;
        divStyle.display =
            divStyle.display == 'block'
          ? 'none'
          : 'block';
    }
}
</script>
</head>
<body>
<div id="id0" onclick="toggleDivsStyleDisplay ();">0</div>
<div id="id1" onclick="toggleDivsStyleDisplay ();">1</div>
</body>
</html>

 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


+5 Profil

icon Re: Zanimljivo - Dinamička uslovna promena stilova24.04.2004. u 03:10 - pre 243 meseci
pošto tražiš samo hint, pogledaj getComputedStyle() za DOM (gecko) i currentStyle za IE.

mada, ima razlike između ta dva. kao što mu ime kaže, document.defaultView.getComputedStyle() metod DOM::ViewCSS interfejsa bi trebalo da vraća izračunate vrednost CSS osobina (properties). znači ako je osobina bila specificirana kao neka relativna ili izračuniva vrednost (procenti, em, smaller, auto i slično), rezultat bi trebalo da bude izračunata vrednost (computed style, kao što je definisan u CSS specifikaciji), u pixelima ili čemu već.

nasuprot tome, element.currentStyle vraća samo specificiranu vrednost (kada se primene sva kaskadna pravila), pa će relativne i izračunive vrednosti ostati baš takve (10%, 30em, auto)..

// mada: izgleda da se i getComputedStyle() ponaša sličnije currentStyle, bar u trenutnoj gecko implementaciji (verziji)..

 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Zanimljivo - Dinamička uslovna promena stilova24.04.2004. u 21:43 - pre 243 meseci
Ma čuh ja jedared da JS nije objektno orijentisan jezik ;)
Pogle putanje do tražene vrednosti -
document.defaultView.getComputedStyle (divs [i], '').getPropertyValue ('display') - neverovatno - Dobro je i radi - baš kao što radi i divs [i].currentStyle.display - svaki kod svoje kuće - još da ne postoji DOM i DOM - već samo DOM - gde bi nam bio kraj - .
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Zanimljivo - Dinamička uslovna promena stilova25.04.2004. u 05:08 - pre 243 meseci
za DOM ne mora tako dugačko. može i window.getComputedStyle(e).display. tj, rezultate getComputedStyle() funkcije možeš posmatrati kao currentStyle objekat (iako ne piše dokumentaciji, vraćeni objekat implementira CSS2Properties interfejs).

i ko je rekao da JS nije objektno-orijentisan? on je funkcionalni i objektno-orijentisan, samo nije klasičan OO jezik koji razlikuje klase i objekte, već samo poznaje prototipove. vidi objašnjenje na http://devedge.netscape.com/li...javascript/1.5/guide/obj2.html

čak je sa malo prototype magije moguće oponašati ovu osobinu IEa u mozili (ili obrnuto, mada je IE sintaxa kraća). npr dodaj ovo u skript:

Code:
HTMLElement.prototype.currentStyle getter = function() {
    return this.ownerDocument.defaultView.getComputedStyle(this, null);
}   


i u mozilli ćeš moći da pročitaš element.currentStyle.color..
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Zanimljivo - Dinamička uslovna promena stilova25.04.2004. u 21:17 - pre 243 meseci
Citat:
i ko je rekao da JS nije objektno-orijentisan?

Nije bitno ko je, doživeo sam da to čujem i najgore je što je dotični lik bio mrtav ozbiljan prilikom izjave (znači - radi se o dubokom ubeđenju).

Nego, getter mi je nov pojam pa sam malo pogledao i na http://www.mozilla.org/js/language/js20-1999-02-18/functions.html nađem definiciju funkcije
Citat:
[Visibility] [getter | setter] function Identifier ( Parameters ) [TypeExpression] Block | TraditionalFunctionDefinition

Radi se o draftu za JS 2.0 iz 1999. godine. Koliko je ovo prisutno u životu tekućih browsera i da li je postalo u međuvremenu standard? Tu je uvođenje pojma Visibility, zatim vidim opciono navođenje tipa, takođe i za parametre, kao i opcione parametre. Nastavim dalje do http://www.mozilla.org/js/lang...0-1999-02-18/declarations.html i tu vidim da postoje i klase, javnost i privatnost...
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


+5 Profil

icon Re: Zanimljivo - Dinamička uslovna promena stilova02.05.2004. u 16:26 - pre 243 meseci
rekao da JS nije OO? a šta mu dođe ono document.forma1.element2.value? (to postoji u JS od kada postoji JS)

btw, moderatore, slabo čitaš dokumentaciju.. ;)

http://devedge.netscape.com/li...ning%20Getters%20and%20Setters

getteri su deo JSa od verzije 1.5 (od mozile 1.0), a EcmaScript standarda od verzije 3 (koji odgovara JS 1.5. EcmaScropt V1 odgovara JS 1.3 koji implementira IE valjda od 5.0 ili 5.5+).

dakle, sve to postoji već skoro 5 godina, ali naravno da se ne može koristiti u IE 6 koji je stariji od toga..

i btw, onaj kod koji sam pokazao prošli put je depriciated sintaxa (do JS 2.0, tj EcmaScript V4), jer nije unazad kompatibilan sa starim JS parserima. pravilna sintaxa je:

Code:
Klasa.prototype.__defineGetter__('osobina', function() {
    return 'nešto';
}


(analogno za setter) ali meni se više sviđa getter, kada ionako ni jedno ni drugo ne rade u IE, a ovo prvo će raditi i u budućnosti..
 
Odgovor na temu

[es] :: Javascript i AJAX :: Zanimljivo - Dinamička uslovna promena stilova

[ Pregleda: 1914 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.