När jag klickar på någon av länkarna skickar jag med en referens (this) till ajaxFunction.
Det jag sedan gör i den funktionen är
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(pic, ele){
// ... en massa kod som är oviktig ...
ele.style.background='#88e0e1';
// ... en massa kod som är oviktig ...
//-->
</script>
Då byter den bakgrundsfärg på det a-elementet jag skickade in till funktionen. Allt funkar fint men jag skulle vilja att det endast är den senaste länken man klickade på som får en annan färg. De andra länkarna ska gå tillbaka till sin normala bakgrundsfärg.
Varje <a> har ett id. Vid onclick jämförs det klickade elementets id mot alla andra; där det stämmer överens sätter du färg 1 och där det inte stämmer överens sätter du färg 2. Kod:
function changeColor(currentElm, colorIfMatch, colorIfNotMatch)
{
var ids = ["a1", "a2", "an"];
for (var i = 0; i < ids.length; ++i)
{
if (currentElm.id != ids[i])
document.getElementById(ids[i]).style.backgroundColor = colorIfNotMatch;
}
currentElm.style.backgroundColor = colorIfMatch;
}
...ovanstående array är ju lätt att skapa om koden genereras med PHP (som jag gissar att du använder). Lite jobbigare dock om man manuellt måste uppdatera dylikt ;)
Om alla länkar i <ul> skall byta färg kanske följande kan fungera:
function changeColor(currentElm, colorIfMatch, colorIfNotMatch)
{
var elm = currentElm, ul = null;
while (elm.parentNode)
{
if (elm.parentNode.nodeName.toUpperCase() == "UL")
{
ul = elm.parentNode;
break;
}
elm = elm.parentNode;
}
if (ul)
{
var a = ul.getElementsByTagName("A");
if (a)
{
for (var i = 0; i < a.length; ++i)
{
if (currentElm.id != a[i].id)
a[i].style.backgroundColor = colorIfNotMatch;
}
currentElm.style.backgroundColor = colorIfMatch;
}
}
}
Okej, jag accepterar ditt svar som slutgiltigt, det är inte världens mest nödvändiga utseendefix på den här hemsidan, så det får gå. Tack för hjälpen! :bire