IE: Wert "false" in einer Variable
AllesMeins
- javascript
Hiho,
hab ein kleines Problem mit dem IE. Ich möchte gerne per JavaScript einer Reihe von checkboxen den selben wert wie einer "Chef-Checkbox" zuweisen. Dazu habe ich mir das folgende Script gebastelt:
function checker(max){
if(document.forms['lv'].elements['alle'].checked){
status = true;
} else {
status = false;
}
for(var i = 1;i <= max; i++){
document.forms['lv'].elements['check_' + i].checked = status;
}
}
Das funktioniert im IE aber leider nur bedingt. Solange die Hauptcheckbox den Wert "true" hat funktioniert es, ist die Hauptcheckbox aber nicht aktiviert landet zwar korrekterweise der Wert "false" in der Variable status, aber komischerweise scheint das nicht der boolsche Wert false zu sein. Denn die checkboxen werden nicht auf false gesetzt und auch eine Probe wie
if(status){ alert("Hallo") } zeigt das status immer noch als wahr angewiesen wird <=> es wird "Hallo" ausgegeben.
Kann mir einer dieses ausgesprochen seltsame Verhalten erklären? Und vor allem wie kann ich das korrigieren?
Grüsse
Marc
Hallo,
function checker(max){
if(document.forms['lv'].elements['alle'].checked){
status = true;
Du definierst hier eine globale Variable status im scope window, also window.status. Kommt Dir window.status bekannt vor? Richtig es enthält normalerweise den Inhalt der Statuszeile.
Definiere die Variable Status nur im Kontext der Funktion, also:
function checker(max){
if(document.forms['lv'].elements['alle'].checked){
var status = true;
} else {
var status = false;
}
for(var i = 1;i <= max; i++){
document.forms['lv'].elements['check_' + i].checked = status;
}
}
dann funktioniert das auch.
Warum aber nicht einfach:
function checker(max){
for(var i = 1;i <= max; i++){
document.forms['lv'].elements['check_' + i].checked = document.forms['lv'].elements['alle'].checked;
}
}
viele Grüße
Axel
Hiho,
danke für den Hinweis. Jetzt funktioniert es.
Grüsse
Marc