我创建了04个按钮,并为CSS中的每个按钮定义了活动状态。这些活动状态在JS中调用,因此它在单击时更改div样式属性,然后在单击其他按钮时重置该属性。
但这不适合我。
我为此创建了fiddle DIV TAG
。请帮助。
答案 0 :(得分:2)
将您的代码从被调用onLoad
更改为No wrap - in <head>
。
因为这些函数在onLoad函数范围内而不是全局范围内,所以它们不可读,并且在单击按钮时没有调用javascript。
我没有更改任何代码,只是左窗格中的选项: jsFiddle
你在逻辑上也有一个小缺陷导致这些类交织在一起。这是你在做什么:
单击第一个对象时,将其类设置为obj1_active。单击第二个对象时,将obj1的类设置为obj2,并将obj2的类设置为obj2_active。
如您所见,我们正在越过obj1和obj2类。要解决此问题,我们将跟踪最后一个单击的对象(role
)以及单击新对象时应该使用的类(cname
)。
以下是演示:jsFiddle
您所使用的代码,但它没有得到很好的优化。我们不应该只需要四个不同的函数,这些函数对不同的元素都基本相同。
在此演示中,我只需在点击时添加并删除每个元素的className中的_active
:jsFiddle
让我们更进一步并使用多个类。这对于能够概括我们的CSS声明很有用。让我们使用默认类,只将active
类附加到活动元素上,并在单击新元素时将其删除。
我们还会将classNames中的_
分开,以便btn
是自己的类以及mission
。这允许我们真正清理我们的CSS代码以提高可读性,并且当我们只需要简单的背景颜色更新或具有这种性质的东西时,不需要更新多个部分。
以下是优化演示:jsFiddle
我不确定你是否打算这样做,但是你会注意到链接有时会开始变白然后点击时变为黑色。这是因为:link
伪选择器仅选择未访问的链接。如果您希望它选择所有链接,请使用<a>
代码:Final jsFiddle