单击时更改颜色

时间:2012-09-28 11:53:54

标签: javascript css hyperlink onclick hover

我想在点击时更改超链接的颜色。

我使用了以下代码并且工作正常:

var current = "home";

function home()
{
    current = "home";
    update2();
}

function comp()
{
    current = "comp";
    update2();
}

function team()
{
    current = "team";
    update2();
}

function cars()
{
    current = "cars";
    update2();
}

function spons()
{
    current = "spons";
    update2();
}

function update2()
{
    if (current == "home"){
        document.getElementById('home').style.cssText='color:#FFE006;font-size:20pt;text-   shadow: -1px 1px 8px #ff9c00, 1px -1px 8px #ff9c00;';
        document.getElementById('comp').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('team').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('cars').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('spons').style.cssText='color:white;font-size:18pt;text-shadow:;';
    } else if (current == "comp"){
        document.getElementById('home').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('comp').style.cssText='color:#FFE006;font-size:20pt;text-shadow: -1px 1px 8px #ff9c00, 1px -1px 8px #ff9c00;';
        document.getElementById('team').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('cars').style.cssText='color:white;font-size:18pt;text-shadow:;';
        document.getElementById('spons').style.cssText='color:white;font-size:18pt;text-shadow:;';
     } else if (current == "team"){
         document.getElementById('home').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('comp').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('team').style.cssText='color:#FFE006;font-size:20pt;text-shadow:  -1px 1px 8px #ff9c00, 1px -1px 8px #ff9c00;';
         document.getElementById('cars').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('spons').style.cssText='color:white;font-size:18pt;text-shadow:;';
     } else if (current == "cars"){
         document.getElementById('home').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('comp').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('team').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('cars').style.cssText='color:#FFE006;font-size:20pt;text-shadow: -1px 1px 8px #ff9c00, 1px -1px 8px #ff9c00;';
         document.getElementById('spons').style.cssText='color:white;font-size:18pt;text-shadow:;';
     } else if (current == "spons"){
         document.getElementById('home').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('comp').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('team').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('cars').style.cssText='color:white;font-size:18pt;text-shadow:;';
         document.getElementById('spons').style.cssText='color:#FFE006;font-size:20pt;text-shadow: -1px 1px 8px #ff9c00, 1px -1px 8px #ff9c00;';
     }
 }

实际上,它起作用但出现了问题。如您所见,当current设置为home/spons/cars/team/comp时,我尝试更改颜色,大小和文字阴影等属性。当用户单击超链接时调用函数时,current会更改。

出现问题,因为我告诉它在:hover时执行相同的属性。单击按钮后,其属性将更改,其他超链接也将更改为白色和18磅大小。

现在,一旦用户点击超链接,它就会改变框架的来源,它自己的属性和其他超链接。属性。但是一旦我点击它然后悬停在另一个超链接上,悬停的属性就不起作用了,但是javascript的属性可以工作。

如果您无法理解我的问题,请查看http://www.xphoenix1.hpage.com/。单击一个菜单按钮后,它也会更改其他按钮属性并停止悬停属性。

如果您能够理解我所说的内容并找到解决方案,那么请回答。

提前谢谢

4 个答案:

答案 0 :(得分:1)

为了公平对待OP,他们想要影响一些不仅仅是文字颜色的变化。而且,不幸的是,大多数styling of the :visited state no longer works as it once did

除了字体颜色外,它们还使字体大小更大,并添加/删除文本阴影。

虽然,我同意,这种JS方法有点过头了。

我对OP的建议是将菜单链接实际转到单独的页面,而不仅仅是交换div。然后,您可以通过任何方式将“当前”类移动从链接移动到链接 - 即使是静态HTML,也可以手动移动。然后根据它来设置样式:

a.current {  //styles }

这种方式可以减少出错的可能性,导航只适用于HTML& CSS - 不需要JS。

答案 1 :(得分:1)

这在css中很简单

a:hover{background-color:yellow;}

答案 2 :(得分:0)

为超链接写文字颜色,像这样写

a:visited{
    color:red;
    }

更新:

好的,如果你想使用JQuery,我们的想法是你将菜单设为<li>或任何其他元素,并将这些图像作为背景图像。当你创建图片有白色文本和&amp;其他下方的黄色(CSS spriting),单击菜单,在当前元素中添加一个名为selected的类,然后移动上面的图像以显示黄色文本,然后从所有其他菜单中删除所选类。例如,我使用了<a>标签。

.menu a{
   background-image:url('images/button.png');
}
.menu a.selected {
     background-image:url('images/button.png'):0 -50px;
}

$(".menu a").live('click', function() {
  $(".menu a").removeClass("selected");
  $(this).addClass("selected");
  return false;
});

查看此帖子here

答案 3 :(得分:0)

然后使用

#home:visited, #comp:visited{
    color:red;
}

或更好,将所有相关的锚点应用于className,例如'rav'(访问后的红色;)) 所以你可以这样做:

.rav:visited{ color:red; }

干杯!