Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JS] foutmelding bij veranderen van class van een element

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

Vrij simpel lijkt me, FF doet t prima namelijk, alleen IE6 geeft foutmelding "object wordt verwacht".

code is alsvolgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<link href="css/styles.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
function changeClass(class) {
    document.body.className=class;
}
</script>
</head>

<body class="start">
<div id="content">
<img src="img/main.jpg" onmouseover="changeClass('group');" /> 
</div>
</body>
</html>


Het idee is dat de class van het body element veranderd wordt. Uiteraard is group een bekende class in mn CSS.

Heb al een zoektocht op google gedaan, maar helaas, de foutmelding is daar toch iets te algemeen voor. Sowieso twijfel ik of het een lokaal IE probleem is, of dat er toch iets structureels mis is.

Verwijderd

Topicstarter
Zelf nog even zitten spelen, het volgende werkt bijvoorbeeld weer wel:

code:
1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<link href="css/styles.css" rel="stylesheet" type="text/css" />
</head>

<body class="start">
<div id="content">
<img src="img/main.jpg" onmouseover="document.body.className='group'" /> 
</div>
</body>
</html>


Maar vind de functie toch iets leesbaarder.

  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 04-10 00:10
Werkt: "" + class misschien?

Webberry Webdevelopment


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:13

crisp

Devver

Pixelated

'class' is een gereserveerd woord ;)

Intentionally left blank


  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 04-10 00:10
hmm good point :+

Webberry Webdevelopment


Verwijderd

Topicstarter
Ik heb ook een ander woord gebruikt... zelfde resultaat :(

  • MichielioZ
  • Registratie: Augustus 2001
  • Laatst online: 11-11 20:46
Misschien de body een id-tag geven en getElementById(bodyid).className ? (niet geprobeerd hier, kwam zo snel ff in me op)

Iedereen wil terug naar de natuur, maar niemand wil lopend...


  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 04-10 00:10
document.getElementsByTagName('body')[0].className = 'yourClass';

Zou ook moeten kunnen volgens mij...

Webberry Webdevelopment


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 20-11 19:54

krvabo

MATERIALISE!

Ben ik de enige die het raar vindt dat er een class wordt gehangen aan het body-element?
Ik bedoel, er mag maar 1x een body-tag zijn. Dus zelfs ALS je al een class of id wilt gebruiken dan zou je alsnog moeten kiezen voor een ID aangezien er nooit meer dan 1 van is?

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

krvabo schreef op vrijdag 25 januari 2008 @ 00:23:
Ben ik de enige die het raar vindt dat er een class wordt gehangen aan het body-element?
Ik bedoel, er mag maar 1x een body-tag zijn. Dus zelfs ALS je al een class of id wilt gebruiken dan zou je alsnog moeten kiezen voor een ID aangezien er nooit meer dan 1 van is?
Je bent de enige ;) Ik zie geen enkele reden waarom dat slecht zou zijn en vind dat je de redenering een beetje omdraait: Het is zo dat je een ID maar 1 keer mag gebruiken; maar dat betekent niet dat als je een class maar 1 keer gebruikt het een ID moet zijn.

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 20-11 19:54

krvabo

MATERIALISE!

Een reden waarom het slecht is?
Het is overbodig. Er is maar 1 element, er is nooit meer dan 1 element van, het is altijd _een_. Dus voor je javascript is het niet nodig.
Blijkbaar doet drupal het wel: http://drupal.org/node/32077

Het betekend niet dat je het *moet* gebruiken nee, maar aangezien er nooit meer dan 1 is is het compleet nutteloos een klasse te gebruiken. Al is het natuurlijk maar een formaliteit.

Hier heb ik net een uitleg gevonden waarom je het zou doen: http://css-tricks.com/id-...-control-and-specificity/
Niet erg overtuigend, maar ik kan me dan nog indenken waarom je het zou doen. Voor je javascript is het in ieder geval nutteloos.

Ah nog een: http://www.webmasterworld.com/forum83/4709.htm
Achja point taken.
Nouja daar gaat het dus over een ID, wat dus ook "logisch" is, en niet een class.

[ Voor 10% gewijzigd door krvabo op 25-01-2008 02:14 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Onderstaande code werkt bij mij (code is gelijk aan die van TS) in zowel IE6 als FF2 / WinXP.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head>
<link href="css/styles.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
function changeClass(sClass)
{
    document.body.className=sClass;
}
</script>
</head>

<body class="start">
<style>
.group
{
  background-color: red;
}
</style>
<div id="content">
<img src="img/main.jpg" onmouseover="changeClass('group');" /> 
</div>
</body>
</html>


@krvabo

Ten eerste, volgens de W3C is class een geldig attribuut voor de body: http://www.w3.org/TR/html401/struct/global.html#h-7.5.1

Ten tweede: je kunt toch ook meerdere - verschillende - elementen dezelfde class mee willen geven? Bijv. een DIV en de BODY, die je altijd dezelfde achtergrondskleur wilt laten hebben:

HTML:
1
2
3
4
5
6
7
<html>
  <head></head>
  <body class="group">
    <div class="head">Hello world</div>
    <div class="group">How is life?</div>
  </body>
</html>


Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.group
{
  background-color: red;
}

body.group
{
  font-size: 12pt;
}

div.group
{
  font-size: 10pt
}

div.head
{
  background-color: white;
}


(Uiteraard kun je in je CSS ook doen: ".group, body{ ....}", maar ik kan me voorstellen dat het prettiger werkt om wel echte classnamen te gebruiken)

[ Voor 11% gewijzigd door Rekcor op 25-01-2008 09:42 . Reden: Toevoegingen ]


Verwijderd

Rekcor schreef op vrijdag 25 januari 2008 @ 09:39:

Ten tweede: je kunt toch ook meerdere - verschillende - elementen dezelfde class mee willen geven? Bijv. een DIV en de BODY, die je altijd dezelfde achtergrondskleur wilt laten hebben:
Daarnaast wil ik vaak meerdere classes aan de body hangen om de onderliggende elementen te stylen, zoals de toepassing op 1 van de links die hierboven ergens genoemd werd. Je kunt ze dan in de CSS apart gebruiken of tegelijk ("body.class1.class2").

[ Voor 7% gewijzigd door Verwijderd op 25-01-2008 12:35 ]

Pagina: 1