DIV活动状态 - 样式更改

时间:2013-05-23 05:00:19

标签: javascript html5

我创建了04个按钮,并为CSS中的每个按钮定义了活动状态。这些活动状态在JS中调用,因此它在单击时更改div样式属性,然后在单击其他按钮时重置该属性。

但这不适合我。

我为此创建了fiddle DIV TAG。请帮助。

1 个答案:

答案 0 :(得分:2)

将您的代码从被调用onLoad更改为No wrap - in <head>

因为这些函数在onLoad函数范围内而不是全局范围内,所以它们不可读,并且在单击按钮时没有调用javascript。

我没有更改任何代码,只是左窗格中的选项: jsFiddle

更新

你在逻辑上也有一个小缺陷导致这些类交织在一起。这是你在做什么:

  

单击第一个对象时,将其类设置为obj1_active。单击第二个对象时,将obj1的类设置为obj2,并将obj2的类设置为obj2_active。

如您所见,我们正在越过obj1和obj2类。要解决此问题,我们将跟踪最后一个单击的对象(role)以及单击新对象时应该使用的类(cname)。

以下是演示:jsFiddle

优化

您所使用的代码,但它没有得到很好的优化。我们不应该只需要四个不同的函数,这些函数对不同的元素都基本相同。

在此演示中,我只需在点击时添加并删除每个元素的className中的_activejsFiddle

让我们更进一步并使用多个类。这对于能够概括我们的CSS声明很有用。让我们使用默认类,只将active类附加到活动元素上,并在单击新元素时将其删除。

我们还会将classNames中的_分开,以便btn是自己的类以及mission。这允许我们真正清理我们的CSS代码以提高可读性,并且当我们只需要简单的背景颜色更新或具有这种性质的东西时,不需要更新多个部分。

以下是优化演示:jsFiddle

链接颜色

我不确定你是否打算这样做,但是你会注意到链接有时会开始变白然后点击时变为黑色。这是因为:link伪选择器仅选择未访问的链接。如果您希望它选择所有链接,请使用<a>代码:Final jsFiddle