/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
'Eksisterer regel i stylesheet?' javascrip~
Fra : René Lønstrup


Dato : 31-12-03 00:14

Hejsa,

Jeg vil gerne have lavet et lille javascript der kan finde ud om der findes
en rule med specificeret navn (f.eks. en class med navnet "minRegel") i mit
stylesheet, men jeg har ingen idé om hvordan det skal ordnes (ved at IE har
document.styleSheet men har endnu ikke fundet ud af hvordan, og om, det kan
bruges til formålet).

Det behøver ikke umiddelbart virke i andre browsere end IE (6), men en
crossbrowser metode vil selvfølgelig være at foretrække

Nogle ideer?


--
Mvh René Lønstrup
min web: http://www.rel7star.dk?r=usenet
min email: se om du kan regne dén ud..



 
 
Lasse Reichstein Nie~ (31-12-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 31-12-03 00:45

"René Lønstrup" <news@rel6+1star.dk> writes:

> Jeg vil gerne have lavet et lille javascript der kan finde ud om der findes
> en rule med specificeret navn (f.eks. en class med navnet "minRegel") i mit
> stylesheet,

Først lidt terminologi: Stylesheet-regler har ikke navne. De har "selectors".
En a de mulige selectors er class-selector, der er på formen
.<navn på klasse>
Så, du vil nok lede efter en regel med selectoren ".minRegel". Du vil
måske også lede efter andre, som fx "div.minRegel" eller "table .minRegel",
som hhv matcher et div-element ned klassen "minRegel" og ethver element
med klassen "minRegel" der er inde i en tabel?

> men jeg har ingen idé om hvordan det skal ordnes (ved at IE har
> document.styleSheet men har endnu ikke fundet ud af hvordan, og om, det kan
> bruges til formålet).

Det burde det kunne.

> Det behøver ikke umiddelbart virke i andre browsere end IE (6), men en
> crossbrowser metode vil selvfølgelig være at foretrække

IE følger, som sædvanligt, ikke helt standarden, så man skal lige tilføje
en ekstra mulighed et sted, så virker det også i Mozilla/Netscape 6+.

---
function findRegel(className) {
for (var i=0;i<document.styleSheets.length;i++) {
var ss = document.styleSheets[i];
var rules = (ss.cssRules || ss.rules); // DOM || IE
for (var j=0;j<rules.length;j++) {
var rule = rules[j];
if (RegExp("\\."+className+"\\b").test(rule.selectorText)) {
return rule.style;
}
}
}
return undefined;
}
---

Denne funktion finder den første regel hvis selector indeholder
class-selectoren ".<className>". Den returnerer så style-elementet
der hører til. Hvis der ikke er nogen, så returnerer den undefined.

Held og lykke.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

René Lønstrup (31-12-2003)
Kommentar
Fra : René Lønstrup


Dato : 31-12-03 01:49

Lasse Reichstein Nielsen wrote:
> Først lidt terminologi: Stylesheet-regler har ikke navne. De har
> "selectors".

Okay..

> Du vil
> måske også lede efter andre, som fx "div.minRegel" eller "table
> .minRegel", som hhv matcher et div-element ned klassen "minRegel" og
> ethver element med klassen "minRegel" der er inde i en tabel?

Lige pt. er det lige meget, men det kan da godt tænkes at jeg fik lyst til
at udvide det til mere specifikt søgning senere. - Men det finder jeg nok ud
af

>> men jeg har ingen idé om hvordan det skal ordnes (ved at IE har
>> document.styleSheet men har endnu ikke fundet ud af hvordan, og om,
>> det kan bruges til formålet).
>
> Det burde det kunne.

Mente det nok - kunne bare ikke lige komme omkring hvordan

> IE følger, som sædvanligt, ikke helt standarden, så man skal lige
> tilføje en ekstra mulighed et sted, så virker det også i
> Mozilla/Netscape 6+.

Det kan jo ikke overraske nogen ;)

> Denne funktion finder den første regel hvis selector indeholder
> class-selectoren ".<className>". Den returnerer så style-elementet
> der hører til. Hvis der ikke er nogen, så returnerer den undefined.

Cool - og det virker (selvfølgelig) glimrende.

> Held og lykke.

Jeg takker mange gange for hjælpen - og ønsker dig et godt nytår


--
Mvh René Lønstrup
min web: http://www.rel7star.dk?r=usenet
min email: se om du kan regne dén ud..



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste