JS返回标签背景颜色

时间:2014-11-05 08:29:41

标签: javascript input label radio

这是我的HTML:

<body>
    <div class="container">
        <img src="2.png" />
        <div id="colorChange"></div>
    </div>

    <div class="colorChoice">
        <form id="colorChoiceForm">
            <ul id="colorListParent">
                <li class="noButton">
                    <input type="radio" name="colorGroup" value="aaa12" id="aaa12" />
                    <label style="background-color:#d21212" class="colorPick" for="aaa12"></label>
                </li>
                <li class="noButton">
                    <input type="radio" name="colorGroup" value="daaa" id="daaa"/>
                    <label style="background-color:#202020" class="colorPick" for="daaa"></label>
                </li>
            </ul>
        </form>
    </div>>
</body>

和JS:

function load() {
    document.getElementById("colorListParent").addEventListener("click", function(e){
        var bgrColor = (e.target.style.backgroundColor); 
        console.log(bgrColor);
        console.log(typeof bgrColor);
        document.getElementById("colorChange").style.backgroundColor = bgrColor;
    });
}

window.onload = load;

直到我用带有for / id脚本的按钮绑定标签 - bby我的意思是#colorChange的背景颜色更改为点击标签的颜色。 现在var bgrColor返回两个字符串 - 第一个是我需要的颜色,但第二个是空的,#colorChange的颜色不会改变。

哪里有问题?

2 个答案:

答案 0 :(得分:0)

一旦你开始使用标签[for],你就必须以不同的方式接近它,因为你的&#34;点击&#34;事件将被触发两次 - 一次用于标签,一次用于单选按钮(自动选择。Here是一个工作小提琴,下面是更改的JS代码。

function load() {
    document.getElementById("colorListParent").addEventListener("click", function(e){
        //alert(e.target.id);
        if(e.target.id) {
            var selector = 'label[for=' + e.target.id + ']';
            var label = document.querySelector(selector);
            var bgrColor = label.style.backgroundColor;
            //alert(bgrColor);
            //alert(typeof bgrColor);
            document.getElementById("colorChange").style.backgroundColor = bgrColor;
        }
    });
}

window.onload = load;

答案 1 :(得分:0)

当您点击标签时,输入&#39;点击了DOM元素,所以你基本上有2点击&#39;事件。 尝试添加类似的东西:

        if(bgrColor && bgrColor.length>0){
            document.getElementById("colorChange").style.backgroundColor = bgrColor;
        }