Autor Zpráva
Miloš
Profil
Potřeboval bych pomocí javascriptu docílit změnu CSS.
Obojí vypisuji v <head> daného HTML souboru, protože je samotný a nijak se nevztahuje k jiným HTML.

Protože javascriptu příliš nerozumím, zkusil jsem to takto:

function jedem(){
   document.styleSheets[0].addRule("h2","text-decoration: underline;");
}


a v HTML potom onload:
<body onload="jedem()">


Jenomže to nefunguje, nadpisy nejsou podtržené.
Kde dělám chybu?
panther
Profil
Miloš:
proč neuděláš na danou stránku interní styl s deklarací pro h2? Přijde mi zbytečné do tohoto tahat JS.
Miloš
Profil
Protože H2 pomocí javascriptu skrývají/odkrývají po nich následující blok, a proto na ně má smysl klikat a proto také mají být podtržené.
Pokud ovšem nejede javascript, na H2 nemá smysl klikat, protože v takovém případě nevykonávají žádnou činnost – proto je také chyba, jsou-li podtržené.
Pokud je podtrhnu pomocí CSS a nepojede javascript, budou klamat svým nevhodným podtržením.
Pokud je podtrhnu javascriptem, budou podtržené pouze v případě, že pojede javascript.
Radek9
Profil
Miloš:
A co nějak takhle?
<style type="text/css">
h2 {
  text-decoration: underline;
}
</style>
<noscript>
  <style type="text/css">
  h2 {
    text-decoration: none;
  }
  </style>
</noscript>
Miloš
Profil
Radek9:
Hezká idea, ale nefunguje.
joe
Profil
Proč to dělat složitě, když to jde jednoduše?

K tagu body přidej třídu js a do CSS pak dej

body.js h2 { text-decoration: underline; }
Miloš
Profil
Když bude mít někdo vypnutý javascript, uvidí <h2> podtržené.
To opravdu nechci.
Chci, aby byly <h2> podtržené POUZE v případě, že má návštěvník fungující javascript.
Radek9
Profil
Miloš:
Přesně to ale joeho řešení splňuje.
joe
Profil
Co to povídáš? Třídu js musíš logicky přidat až pomocí JavaScriptu. Podle toho jsem ji taky nazval.
Miloš
Profil
Dobrá, ale jak tu třídu pomocí javascriptu přidám?
Jak jsem uvedl, javascriptu rozumím opravdu velmi mizerně.
joe
Profil
Miloš:
A hledat umíš? :)

Jako element pak můžeš dát document.body
Radek9
Profil
Miloš:
Do onload dej tohle:
document.body.className = "js";
Miloš
Profil
Radek9:
Díky, takhle to funguje.

joe:
Problém je, když mám hledat se svými mizernými znalostmi angličtiny. Když nevím, jak formulovat otázku, hladá se hodně blbě.
Chamurappi
Profil
Reaguji na joa:
A hledat umíš? :)
Odkázaný skript je napsaný docela odpudivě, přestože je to tak jednoduchá akce. Doporučuji obyčejné (jedno jediné) přičtení " js".


Reaguji na Radka9:
Nemusí čekat na onload.
A nemusí třídu nastavovat na <body>, může ji (absolutně kdykoliv) nastavit na <html> (tedy document.documentElement).


Koukám, že je zamčeno. Moc nerozumím proč… ale budiž, už mlčím.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0