0

我在 a 中有三个彩色框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>

我们的班级正在使用addEventListenerif 这会使任何事情变得更容易。提前感谢您的任何反馈,我们将不胜感激。

4

4 回答 4

6

查看纯 JavaScript:

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

使用 jQuery:

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

更新:不是点击,而是悬停。固定 css 属性名称。

于 2013-10-29T02:23:07.537 回答
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
}

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

于 2013-10-29T02:26:08.083 回答
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>

在这里提琴

于 2013-10-29T04:59:33.627 回答
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链接中查看它。

于 2013-10-29T03:05:47.613 回答