Avatar billede mikkel_strack Nybegynder
17. september 2004 - 14:09 Der er 5 kommentarer og
1 løsning

Ændre border-color dynamisk

Nogen der kan hjælpe mig med at ændre border-color på en celle dynamisk??
Jeg leder efter noget der kan i stil med det her - altså ændre nogle css-properties dynamisk:
http://msdn.microsoft.com/workshop/samples/author/dhtml/refs/removeRule.htm

Problemet er at det ikke virker i firefox...og det skal det naturligvis.
Avatar billede skovenborg Nybegynder
17. september 2004 - 15:51 #1
problemmet er at firefox holder sig til den officiele DOM standard fra W3C (hvis man kan kalde det et problem) hvorimod Microsoft bruger nærmest en blanding mellem den og deres egen. addRule bliver derfor til insertRule og removeRule bliver til deleteRule. Ud over det bruger microsoft document.styleSheets[index].rules for de forskellige regler, mens firefox (og mozilla) bruger: document.styleSheets[iSheets-1].cssRules.

Ud over det fungerer insertRule på en lidt anderledes måde, da du i første argument skal skrive hele reglen og ikke kun hvad den skal gælde for. Det andet argument bliver her brugt til at angive hvor i regelsættet den skal sættes ind (hvis den er lig med længden af regelsættet (cssRules.length) bliver den sat hen i enden).

Derfor kommer koden til at se sådan ud (for at tage deres eksempel):

function addTheRule()
{
var iSheets = document.styleSheets.length;
elm = document.getElementById("oEffectRules");

// make sure there is a stylesheet to add to
if (0 < iSheets && document.styleSheets)
    {
      if (document.styleSheets[iSheets-1].addRule) {document.styleSheets[iSheets-1].addRule("P", "font-size:18pt");}
      else {document.styleSheets[iSheets-1].insertRule("P {font-size:18pt}",document.styleSheets[iSheets-1].cssRules.length);}
      elm.innerHTML=elm.innerHTML;
      iRules = (document.styleSheets[iSheets-1].rules) ? document.styleSheets[iSheets-1].rules.length : document.styleSheets[iSheets-1].cssRules.length;
      alert("The stylesheets array length is " + document.styleSheets.length + "\nThe rules array length is " + iRules);
    }
}

function removeTheRule()
{
var iSheets = document.styleSheets.length;
var iRules = (document.styleSheets[iSheets-1].rules) ? document.styleSheets[iSheets-1].rules.length : document.styleSheets[iSheets-1].cssRules.length;
elm = document.getElementById("oEffectRules");

// make sure there is a rule to delete
if (1 < iRules)
    {
      if (document.styleSheets[iSheets-1].removeRule) {document.styleSheets[iSheets-1].removeRule(1);}
      else {document.styleSheets[iSheets-1].deleteRule(1);}
      elm.innerHTML=elm.innerHTML;
      iRules = (document.styleSheets[iSheets-1].rules) ? document.styleSheets[iSheets-1].rules.length : document.styleSheets[iSheets-1].cssRules.length;
      alert("The stylesheets array length is " + document.styleSheets.length + "\nThe rules array length is " + iRules);
    }
}
Avatar billede mikkel_strack Nybegynder
17. september 2004 - 16:30 #2
Jeg er lige på nippet til at kalde dig en knag :o)

Virker helt perfekt! I hvert fald i IE og Firefox. Opera er ikke med, men op i røven med det. Men er det så fordi de også bruger deres egen, og ikke holder sig til den officielle standard??

Men tusind tak! Smid et svar så jeg kan få afregnet min gæld :o)
Avatar billede skovenborg Nybegynder
17. september 2004 - 20:58 #3
tja, hvis man skal have det til at virke i opera må man vælge en anden fremgangsmåde. Fx blot at bruge den gode, gamle document.getElementById("elementid").style.fontSize = "18pt". Hvis du er tvivl om hvad firefox understøtter kan du til dels se på den officille standard:
http://www.w3.org/DOM/DOMTR
og en speciel gecko-reference:
http://www.mozilla.org/docs/dom/domref/
Men hvis du har mulighed for at bruge DOM Inspector, så er det også en kanon hjælp til at finde ud af hvad mozilla understøtter af methoder og properties.
Avatar billede skovenborg Nybegynder
17. september 2004 - 20:59 #4
og så kan jeg også henvise til microsofts udgave af deres dom-udgave:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp
Avatar billede skovenborg Nybegynder
17. september 2004 - 21:00 #5
hovsa, glemte helt at svare i alt min ivrighed ;-)
Avatar billede skovenborg Nybegynder
17. september 2004 - 21:59 #6
og tak for points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester