Javascript:单击更改按钮文本颜色
2013-02-13
2042
嘿,我有以下 javascript 代码和附带的 HTML。我试图让每个按钮在被点击时将文本颜色更改为蓝色,然后在单击下一个按钮时将先前单击的按钮的文本更改回绿色。基本上只有最近单击的按钮有蓝色文本。我试过此代码,但使用此代码,它会在第一次单击按钮时将所有按钮文本更改为蓝色。任何帮助都非常感谢。以下是 Javascript、HTML 和 CSS。
function swapIphoneImage( tmpIPhoneImage ) {
var el = document.getElementById('my-link');
var el1 = document.getElementById('my-link1');
var el2 = document.getElementById('my-link2');
var el3 = document.getElementById('my-link3');
var el4 = document.getElementById('my-link4');
var iphoneImage = document.getElementById('iphoneImage');
iphoneImage.src = tmpIPhoneImage;
el.className = 'clicked-class';
el1.className = 'clicked-class1';
el2.className = 'clicked-class2';
el3.className = 'clicked-class3';
el4.className = 'clicked-class4';
}
html
<ul class="features">
<li><a id="my-link" href="javascript:swapIphoneImage('wscalendarws.png');" title="">HaPPPs Calendar</a></li>
<li><a id="my-link1" href="javascript:swapIphoneImage('wsweekendws.png');" title="">Weekend Events</a></li>
<li><a id="my-link2" href="javascript:swapIphoneImage('wsfollowingws.png');" title="">Places & People</a></li>
<li><a id="my-link3" href="javascript:swapIphoneImage('wstemplateviewws.png');" title="">Customize Events</a></li>
<li><a id="my-link4" href="javascript:swapIphoneImage('wscheckinws.png');" title="">Interaction</a></li>
</ul>
css
a#my-link.clicked-class {
color: #71a1ff !important;
}
a#my-link1.clicked-class1 {
color: #71a1ff !important;
}
a#my-link2.clicked-class2 {
color: #71a1ff !important;
}
a#my-link3.clicked-class3 {
color: #71a1ff !important;
}
a#my-link4.clicked-class4 {
color: #71a1ff !important;
}
Where am I failing?
3个回答
尝试使用 JavaScript 更改类,然后您只需要一个类即可确定单击了哪个类。
以下是示例:
JS:
$("UL.features LI A").click(function(){
$("UL.features LI A").removeClass('clicked');
$(this).addClass('clicked');
});
CSS:
A.clicked {
color:#71a1ff !important;
}
以下是 jsfiddle 中的代码: http://jsfiddle.net/57PBm/
编辑: 此解决方案使用 JQuery,如果您还没有使用过,我强烈建议您使用。
Ryan Erickson
2013-02-13
将 JS 代码重写为:
function swapIphoneImage( elThis, tmpIPhoneImage ) {
var el = document.getElementByClassName('clicked-class');
var iphoneImage = document.getElementById('iphoneImage');
iphoneImage.src = tmpIPhoneImage;
el.className = '';
elThis.className = 'clicked-class';
}
并将每个按钮重写为:
<li><a id="my-link" href="javascript:swapIphoneImage(this, 'wscalendarws.png');" title="">HaPPPs Calendar</a></li>
您不需要为同一件事设置 5 个 CSS 类。
tomis
2013-02-13
您正在将每个元素更改为单击类。只需将一个数字传递给函数,该函数标识哪个按钮为蓝色,然后通过 JS 将那个按钮涂成蓝色,将所有其他按钮涂成绿色。
ameed
2013-02-13