Javascript: Change Label Background Color On Checkbox
I am trying to change the background color of a label in each checkbox in a form based on the checked/unchecked state of the checkbox.So far I got it to change initially, but it wo
Solution 1:
myLayer.checked = true
is an assignment, not a condition.
if (myLayer.checked = true)
is every time evaluated as
if (true)
And the else part will never be executed. So change it to:
if (myLayer.checked === true)
Also, you should check for the input, and not for the layer, which doesn't have any checked property:
if (myLayer.childNodes[0].checked === true)
Solution 2:
the non-jQuery route. pass a second param to your statecheck function.
<label title="American Samoa" id="AmericanSamoa"><input type="checkbox" value="checkbox" onchange="statecheck(this,'AmericanSamoa')" />AS</label>
and the javascript
function statecheck(chk, layer) {
var myLayer = document.getElementById(layer);
//myLayer.style.backgroundColor = "#bff0a1";
if(chk.checked === true){
myLayer.style.backgroundColor = "#bff0a1";
} else {
myLayer.style.backgroundColor = "#eee";
}
}
Solution 3:
My solution based on your helpful input:
function statecheck(layer) {
var myLayer = document.getElementById(layer);
//myLayer.style.backgroundColor = "#bff0a1";
if(myLayer.childNodes[0].checked === true){
myLayer.style.backgroundColor = "#bff0a1";
} else {
myLayer.style.backgroundColor = "#eee";
};
}
Solution 4:
There are couple of mistakes, in your script.
- You are passing lable id and checking for labelId.checked which does not exist
- You are using = in if condition which should be ==
This is how you JS method should look like
function statecheck(layer, checkbox) {
var myLayer = document.getElementById(layer);
//myLayer.style.backgroundColor = "#bff0a1";
if(checkbox.checked == true){
myLayer.style.backgroundColor = "#bff0a1";
} else {
myLayer.style.backgroundColor = "#eee";
};
}
HTML
<input type="checkbox" value="checkbox" onchange="statecheck('Alabama', this)" />
Solution 5:
You are missing an equals in the if statement.. Is that a typo error or is the solution to your problem?
Post a Comment for "Javascript: Change Label Background Color On Checkbox"