Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Dienstag, 28. Februar 2006, 15:43

setAttribute im IE

Folgendes gekürztes Code-Beispiel liefert im Mozilla die erwarteten Ergebnisse. Im IE6 jedoch nicht. Liegt es daran das letzterer setattribute nicht kennt oder habe ich woanders einen Fehler eingebaut (bin JS-Anfänger)?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
 <head>
 <title>Test</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <style type="text/css">
<!--
td {background:#4069F5; color:white;}
 tr.grau td {background:#DFDFDF; color:#AFAFAF;}
 tr.an td {background:#4069F5; color:white;}
 tr.grau td a, tr.grau td a:link, tr.grau td a:visited, tr.grau td a:hover, tr.grau td a:focus {background:#DFDFDF; color:#AFAFAF; text-decoration:none;}
-->
</style>
<script language="JavaScript">
<!--
  var heime = new Array("quellerduenen", "jugendhof", "frankfurter", "seerose");
var heime_schalter = new Array(9);

function ausblenden(haus)
{
    document.getElementById(haus).setAttribute("class", "grau", "false");
}

function einblenden(haus)
{
    document.getElementById(haus).setAttribute("class", "an", "false");
}

function tabelle()
{
    for (var i = 0; i <= 3; i++) {
     if (heime_schalter[i] == 0) {
      ausblenden(heime[i]);
     } else {
      einblenden(heime[i]);
     }
    }
}

function auswerten_quartier() {
// Initialwerte
heime_schalter = new Array (1,1,1,1);
// form_quartier zurücksetzen
document.form_kur.reset();

// Variablen holen
var verpfl = document.form_quartier.verpflegung.value;

// Liste der Häuser durchtesten
if (verpfl == 2) {
heime_schalter[0] = 0;
heime_schalter[1] = 0;
heime_schalter[2] = 0;
}

// Häuser ausblenden
tabelle();
}

function auswerten_kur() {
heime_schalter = new Array (1,1,1,1);
// form_quartier zurücksetzen
document.form_quartier.reset();

// Variablen holen
var verpfl = document.form_kur.verpflegung1.value;

// Häuser ohne Kur ausblenden
heime_schalter[0] = 0;
heime_schalter[1] = 0;
heime_schalter[3] = 0;

// restliche Liste der Häuser durchtesten
if (verpfl == 2) {
heime_schalter[2] = 0;
}

// verbleibende Häuser ausblenden
tabelle();
}
//-->
</script>
 </head>
 <body>
     <form action="gen.php?section=quartier" method="post" name="form_quartier">
      <p>
       Wir wünschen einen Aufenthalt mit
       <select name="verpflegung" size="1" onChange="auswerten_quartier()">
        <option value="0">- bitte wählen Sie - </option>
        <option value="1">Vollverpflegung</option>
        <option value="2">Selbstverpflegung</option>
       </select>.
       </p>
      <noscript>
       <p><input type="submit" value="Ergebnis anzeigen" name="input" id="input" /></p>
      </noscript>
     </form>
     <form action="gen.php?section=kur" method="post" name="form_kur">
      <p>
       Wir wünschen eine Kur mit
       <select name="verpflegung1" size="1" onChange="auswerten_kur()">
        <option value="0">- bitte wählen Sie - </option>
        <option value="1">Vollverpflegung</option>
        <option value="2">Selbstverpflegung</option>
       </select>.
      </p>
      <noscript>
       <p><input type="submit" value="Ergebnis anzeigen" name="input" id="input" /></p>
      </noscript>
     </form>
  <h2>Für Ihr Vorhaben empfehlen sich:</h2>
  <table class="liste">
   <thead>
    <tr>
     <th>Hausname</th>
    </tr>
   </thead>
   <tbody>
    <tr id="quellerduenen">
     <td><a href="http://www.quellerduenen.de/" title="zur Homepage">CVJM Quellerdünen</a></td>
    </tr>
    <tr id="jugendhof">
     <td><a href="http://www.evangelischer-jugendhof.de/" title="zur Homepage">Ev. Jugendhof</a></td>
    </tr>
    <tr id="frankfurter">
     <td><a href="http://www.frankfurt-evangelisch.de/" title="zur Homepage">Frankfurter Haus</a></td>
    </tr>
    <tr id="seerose">
     <td><a href="http://www.HausSeerose.de/" title="zur Homepage">Haus Seerose</a></td>
    </tr>
   </tbody>
  </table>
 </body>
</html>

2

Dienstag, 28. Februar 2006, 16:31

für den IE kannst du "class" im setAttribute nicht benutzen ... da muss es "className" heissen ... was natürlich andere Browser nicht schnallen ... ergo wirst du, wenn du diese Methode beibehalten willst, um ne Browserweiche nicht drumrumkommen
Signatur von »TheNobody Style«

3

Mittwoch, 1. März 2006, 09:59

className

Vielen Dank erstmal! Das scheint echt meine Rettung aus langer Ratlosigkeit zu sein.
Meinst du mit deiner Antwort das, was hier unter

Zitat von »http://de.selfhtml.org/javascript/objekte/node.htm#set_attribute«

Beachten Sie:
steht?
Ich müsste also nur eine simple Browserweiche einbauen, damit im IE statt

Quellcode

1
document.getElementById(haus).setAttribute("class", "grau", "false");

folgendes steht:

Quellcode

1
document.getElementById(haus).setAttribute("className", "grau", "false");

Richtig?
Welche Browserweiche bietet sich denn da an?
EDIT: Außerdem steht da noch

Zitat von »http://de.selfhtml.org/javascript/objekte/node.htm#set_attribute«

Deshalb ist es einfacher, den Internet-Explorer-Fehler zu umgehen, indem Sie auf setAttribute() möglichst verzichten und den Direktzugriff nutzen.

Wie ist das denn gemeint? So vielleicht:

Quellcode

1
document.getElementById(haus).class = "grau";

Klappt das?

EDIT: So klappt es in beiden Browsern:

Quellcode

1
document.getElementById(haus).className = "grau";

Vielen Dank für den Hinweis, damit hat sich das Problem erledigt! :-)
( :mad: Scheiß unübersichtliches JS und scheiß MS und scheiß Browserinkompatibilitäten)
Das musste ich mla loswerden...

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »MyWege« (1. März 2006, 10:21)