Hej Det är inte så att din onmouseout slår nästan direkt då? Om färgen ändras av ett click (säker på att det inte är onclick som du vill använda, ej relevant för frågan) så triggas din event men sen händer något mer. Eftersom vi inte sett någon mer kod är det enbart onmouseover/onmouseout som kan slå. Tack för ditt svar, Använd inte document.all(id) utan det standardiserade document.getElementById(id). Ja, klickar du på hyperlänken blir det postback och cssklassen följer inte med utan blir enligt din markup. Du skulle ju kunna hantera postback-event för länken, ta fram parent och sätta css-klassen där. tack för det, Det är för att parent är närmaste kontroll upp i kedjan som är runat=server. Tack så mycket fö din tid, Pekar du inte redan länken mot default.aspx, varför då omdirigera? Svårt att ge råd om små detaljer när översikten saknas och ändrar förutsättningarna. jag har en meny, vad jag vill göra är att när musen rörs över en Item, den sak få en bakgrundsferg grå och när jag tar bort pekaren (musen) den får tillbaka sin ursprunliga bakgrund och den länken är klikad får den blå som bakgrundsfärg (cssClass) som visar i vilken sida besökaren ligger. Om du nu inte är kvar på asp.net 1.1 så rekommenderar jag att du utforskar masterpages och <asp:Menu ...>, då får du precis den funktionaliteten (och en massa annat). tack för det, Så menyn i fråga är copy/paste'ad till samtliga sidor? Då kan du ju ändra vad som är selected i Page_Load, massa manuellt och hårdkodat men det har du ju ändå utan asp:menu och masterpages. :) just det, I så fall är sättet att köra ett script i <body onload=...> som jämför nuvarande url (document.location.href) mot href-attributen i din tabell.problem med onClick och onMouseUp ändra backgroud
Jag har en meny som är tabell celler och ändrar deras backgroud med hjälp ava onMouseOver, onMouseOut, onMouseUp och onclik.
När jag clickar på cellerna vill jag att de ska ha en annan bakgrundsbild men den ändras bara en kort secund (0,2 second) och den ändras tillbaka igen. (onMouseOver och onMouseOut funkar)
här är min kod:
<td class="menuItem" id="home" onmouseover="SetClass('home', 'ItemMouseOver')" onmouseout="SetClass('home', 'ItemMouseOut')" onmouseup="SetClass('home', 'ItemMouseClick')">
<asp:HyperLink ID="hlHOme" runat="server" NavigateUrl="~/Default.aspx" Text="Destpek"></asp:HyperLink>
</td>
function SetClass(id, myclass) {
document.all(id).className = myclass;
}Sv: problem med onClick och onMouseUp ändra backgroud
Om klick ska stänga av färgändringen för over/out måste du hantera det i SetClass.
Exempelvis:
function SetClass(id, myclass) {
if (document.all(id).className != 'ItemMouseClick')
{
document.all(id).className = myclass;
}
}
Här skulle du ju även kunna kolla om ItemMouseClick redan är den aktiva klassen och i så fall ändra tillbaka till ItemMouseOut för att simulera en på/av-knapp.
//AndersSv:problem med onClick och onMouseUp ändra backgroud
Jag tror problemet ligger hos hyperlinken för att när man klikar den då blir en post back och får cellen menuItem som klass. eller jag har inte försått hur javascript laddas om till klienten. jag vet inte.
tackSv: problem med onClick och onMouseUp ändra backgroud
Sv: problem med onClick och onMouseUp ändra backgroud
HyperLink-klassen stöder dock inte events så då får du använda en LinkButton istället.
Alltså:
Om "aktiv sida" (för det är väl det du menar?) är vald, hantera det i din javascript-kod och ändra inte för mouseover/mouseout då.
Ange en eventhandler för din LinkButton som hanterar postback-eventet. I den metoden så hämtar du Parent för din LinkButton och ställer CSS-klassen.
//AndersSv:problem med onClick och onMouseUp ändra backgroud
menar du i MyLinkButton_Click heventhandlern ska göra något i still med:
MyLinkButton.Parent.cssClass
men Parent har ingen cssClass property eller någont liknande.Sv: problem med onClick och onMouseUp ändra backgroud
Om du i din td-tag lägger till runat="server" så blir parent en HtmlTableCell som har Attributes som du kan använda för att lägga till "class" och ett klassnamn:
Exempel på eventhandler:
protected void lbButton_Click(object sender, EventArgs e)
{
LinkButton button = sender as LinkButton;
HtmlTableCell cell = button.Parent as HtmlTableCell;
cell.Attributes["class"] = "ItemMouseClick";
}
Jag skulle vilja tillägga att om du inte behöver postback utan kan göra det du vill på klientsidan via javascript så funkar din ursprungliga plan bra, med tillägget att du måste stänga av over/out efter att du klickat.
//AndersSv:problem med onClick och onMouseUp ändra backgroud
problemet är Response.Redirect("~/default.aspx"); och cellen laddas om som nytt.Sv: problem med onClick och onMouseUp ändra backgroud
Vad, rent översiktligt, försöker du göra?
//AndersSv:problem med onClick och onMouseUp ändra backgroud
Sv: problem med onClick och onMouseUp ändra backgroud
//AndersSv:problem med onClick och onMouseUp ändra backgroud
jag håller på 3.5 faktiskt och har jobbat med sitemap och asp.menu och masterpages, men i det här fallet menyn är bara en tabell.Sv: problem med onClick och onMouseUp ändra backgroud
//AndersSv:problem med onClick och onMouseUp ändra backgroud
ville bara fixa det med hjälp av onClick, onMouseOver och onMouseOut med JavaScript.
i värsta fall jag kommer att göra vad du skrivit.Sv: problem med onClick och onMouseUp ändra backgroud
Det kommer inte bli roligt att rota reda på alla dina a-taggar, rekommenderar att du använder http://js-xpath.sourceforge.net/ eller liknande så att du åtminstone kan köra en xpath-sökning i stil med "//table[@id=mymenu]//a".
//Anders