Har gjort en usercontrol med divs som jag vill dölja och visa genom css och mouseover/mouseout på annan div. Ann, jäpp. Det är vad jag får i felmeddelande <b>"namnet på div" är inte definierat</b>, där det inom citat står ID-attributet. Ann, Kod i userkontrollen: Ann, Johan Id:t på servern är ju lokalt inom kontrollen men javascriptet körs på klienten. Asp.net är så smart gjort att den lägger till information för vilka kontroller som din kontroll ligger i. Det id som asp.net skickar till klienten är därför längre än det som finns på servern. Eftersom att det inte är samma så kommer inte ditt javascript att fungera då du anger serverns id men det är på klienten som koden körs. Ok nu skall vi se :-) Blev nått fel när jag skrev in mitt inlägg... av någon anledning sparades det inte. div i usercontrol
Det fungerar hur fint som helst om jag gör det på en vanlig sida.
När det är i en usercontrol får jag felmeddeladet: "namnet på div" är inte definierat.
Har varit inne på att göra en klass som "vaddetnuheter" div. (I en vanlig sida måste det ju ett element stå med i #Region " Web Form Designer Generated Code ". Men det var tji, förmodligen är jag helt ute och famlar.
Sedan har jag provat att lägga in den på sidan där usercontrollen finns, det gick inte heller vägen.
Går det att göra och vad behöver jag i så fall ordna?
/AnnSv: div i usercontrol
Har du satt ett ID attribut på diven så dina script hittar den på sidan?
mvh JohanSv:div i usercontrol
<b>Edit:</b> för att vara tydlig, i felmeddelandet står inget inom citattecken, utan i min förklaring står id-attributet på plats för både cittattecken och texten emellan dem.
/AnnSv: div i usercontrol
Visa lite kod så ska vi se om vi kan komma till botten med detta! =)Sv:div i usercontrol
<div id="nrEtt" runat="server" Class="m_normal" onmouseover="this.className='hover';nrEtt.className='vis2'" onmouseout="this.className='m_normal'"><asp:HyperLink id="ett1" runat="server" NavigateUrl="stva.aspx">Huvud1</asp:HyperLink></div>
<div id="nrEtta" runat="server" onmouseover="this.className='hover'">lorem ipsum</div>
Egentligen ska det ju vara dubbla klasser på onMouseOut för div nrEtt också, men jag kör så att jag tar ett steg i taget och fungerar det lägger jag på nästa.
Felmeddelandet är Fel: 'nrEtta' är odefinierad. Uppträder onMouseOver på nrEtt.
I code-behind för usercontrollen är nrEtta
Protected WithEvents nrEtta As System.Web.UI.HtmlControls.HtmlGenericControl
Så här ser det ut på en vanlig sida (samma sida där jag försöker köra usercontrollen) och då fungerar det.
<P class="m_normal" onmouseover="onoff.className='vis2';this.className='hover'" onmouseout="onoff.className='vis1';this.className='m_normal'"> Mouseover här döljer diven till vänster och har en egen klass.</P>
note: vis2 är css-klass med visibility: hidden;
och den har jag i css-fil länkad till dokumentet.
(vis1 är visibility: visible;)
/AnnSv: div i usercontrol
Måste du ha din div som en server control? Du sätter runat="server" på den, är det någon anledning att fu gör så? Nyttjar du den i din code behind?
Hur ser outputen ut för denna div i din browser i det fall den inte fungerar?
För grejen är den att denna control kommer få ett helt annat ID om den skapas i en kontroll osv.
så din nrEtt blir något_nrEtt för att få det att fungera måste du ange hela detta ID annars hittas den inte. när du ändå kör en runat="server" på den kan du ju lägga till onmouseover attributet i din code behind och där ta kontrollens ID istället för att hårdskriva nrEtt på så vis får du med kontrollens id.
pseudo kod:
kontrol.Attributes.Add ... onmouseover ... kontrol.Id+".className........
Shit, måste till tåget...
Mvh JohanSv:div i usercontrol
Nej, det är ingen anledning, ännu.
Förmodligen så har jag knackat in det så många ggr så det bara skulle va där LOL.
Tack för förklaringen, nu har jag något att utgå från.
Vet såpass att man inte ska använda asp: när det räcker med vanlig html, men ibland blir jag så hemmablind som jag bara kan bli.
Fråga: du skriver något_nrEtta. Detta något härrör från? (tänkte lägga det på minnet för framtida bruk, precis som jag gjorde med runat.)
Hängde också med i det du skrev fram till: och där ta kontrollens ID istället för att hårdskriva nrEtt på så vis får du med kontrollens id.
Hur undviker jag att hårdkoda det? Båda divarna ligger ju i kontrollen
Vad jag försöker göra är en meny där det på relevanta "knappar" ska komma fram "underknappar".
Hoppas du hann...
/AnnSv: div i usercontrol
Ta dig en titt i källkoden som spottas ut ur asp.netSv: div i usercontrol
Med "något_" menar jag det ID som hierarkin har.
Du har alltid ett ID som tilldelas, om kontrollen ligger i denna kontrol blir idt
pappans id + controllens id. etc... Det blir alltså ett id i herarkisk ordning.
Mvh JohanSv: div i usercontrol
Så jag gjorde en back och postade igen. Satt remote från jobbet, svarade via min dator hemma. Så jag såg inte att ett svar redan kommit in, ifall du undrar hur jag kunde ge samma svar så många h efteråt :-)
Mvh Johan