在javascript中更改子hover上父div的背景颜色?

时间:2013-10-29 02:17:45

标签: javascript html css colors hover

我在div中有三个彩色方框,所有颜色都不同,当我hover在任何这些方框上时,我必须制作父background-color div与正在盘旋的内盒颜色相同的颜色显示。

CSS:

 .t1_colors {
    float: left;
    width: 100px;
    height: 100px;
    margin-right: 20px;
    border: 1px solid rgb(111,61,69);
    }

HTML:

<div id="task1" class="task">
    <h2>Task 1</h2>
    <p>Change the background color, of the div that     contains this task, to the color in each box when the box is hovered over.</p>
    <p>When the mouse stops hovering over the box, change the background color back to white.</p>
    <div id="t1_color_one" class="t1_colors" style="background: goldenrod;"></div>
    <div id="t1_color_two" class="t1_colors" style="background: lightgreen;"></div>
    <div id="t1_color_three" class="t1_colors" style="background: palevioletred;"</div>
</div>

我们班正在使用addEventListener,如果这样可以让任何事情变得更容易。提前感谢您的任何反馈,我们将不胜感激。

4 个答案:

答案 0 :(得分:4)

查看纯JavaScript:

<div>
  <div id="child" onMouseOver="this.parentNode.style.background='red'">Hover Me</div>
</div>

使用jQuery:

 $("#child").hover(function(){
     $(this).parent().css("bakground,"red");
 });

更新不点击它的悬停。

答案 1 :(得分:0)

var parent = document.getElementById("task1");//get parent element

var item1 = document.getElementById("t1_color_one");//get child element

item1.addEventListener("mouseover", func, false);//add event listener for first item on mouseover and call func when someone mouse overs it

function func()
{  
  parent.setAttribute("style", item1.getAttribute("style"));//set the style attribute of the parent to the style attribute of the child
}

然后你可以为其余的人做类似的事情。

答案 2 :(得分:0)

以下是纯javascript中的答案

window.addEventListener('load', function(event)
{
    var divs = document.getElementsByClassName('t1_colors');
    var count_of_divs = divs.length;

    for(var i = 0; i<count_of_divs; i++)
    {
        divs[i].addEventListener('mouseover', function(e)
        {
            document.getElementById('task1').setAttribute('style', e.target.getAttribute('style'));
        }, false);

        divs[i].addEventListener('mouseout', function(e)
        {
            document.getElementById('task1').removeAttribute('style');
        }, false)
    }
}, false);

你可以在jsFiddle link中查看它。

答案 3 :(得分:0)

使用以下代码:

<html>
    <head>
        <style>
            .t1_colors {
            float: left;
            width: 100px;
            height: 100px;
            margin-right: 20px;
            border: 1px solid rgb(111,61,69);
            }
        </style>
    </head>
    <body>
        <div id="task1" class="task">
            <h2>Task 1</h2>
            <p>Change the background color, of the div that     contains this task, to the color in each box when the box is hovered over.</p>
            <p>When the mouse stops hovering over the box, change the background color back to white.</p>
            <div id="t1_color_one" class="t1_colors" style="background: goldenrod;">ugy</div>
            <div id="t1_color_two" class="t1_colors" style="background: lightgreen;">hjk</div>
            <div id="t1_color_three" class="t1_colors" style="background: palevioletred;">jkk</div>
        </div>
    </body>
    <script>
        try
        {
            function change_bgcolor(elem)
            {
                elem.addEventListener('mouseover', function(){elem.parentNode.style.backgroundColor=elem.style.backgroundColor}, false);
            }

            function f1()
            {
                div_arr=document.getElementsByTagName('div');
                for(x in div_arr)
                {
                    if(div_arr[x].parentNode.tagName=="DIV")
                    {
                        change_bgcolor(div_arr[x]);
                    }
                }
            }
        }
        catch(e)
        {alert(e);}
        onload=f1();
    </script>
</html>

Fiddle 此处