Avatar billede dustbunny Nybegynder
07. december 2005 - 01:05 Der er 9 kommentarer og
1 løsning

drop down divs

Jeg er kørt fast i en rodet kode og tænkte der måtte være en mere enkelt måde at løse det på. Jeg mangler en måde at styre farven på skrifttypen når man laver en onmouseover. Pt. laver den rod i det og ændre den aktive menus skrifttype farve. Den skal bare blive ved med at være hvid. Nå men her er koden.

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>test</title>
<style type="text/css">
.masterdiv                { }
.menutitle            { cursor: pointer; width: 344px; height: 19px }
.submenu            { width: 344px }
.bgsub1  { background-image: url(images/bgsub1.gif); background-repeat: repeat-x }
.bgsub2  { background-image: url(images/bgsub2.gif); background-repeat: repeat-x }
.deftext  { color: #535353; font-size: 8pt; font-family: Verdana, Arial, Helvetica; font-weight: bold }
.overtext { color: #fff; font-size: 8pt; font-family: Verdana, Arial, Helvetica; font-weight: bold }
.subtext { color: black; font-size: 8pt; font-family: Verdana, Arial, Helvetica; font-weight: bold }
</style>

<script type="text/javascript">

var persistmenu="yes"
var persisttype="sitewide"
var outcolor=""
var overcolor="#852C25"

if (document.getElementById){
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}

function SwitchMenu(obj){
if(document.getElementById){
var el = document.getElementById("sub"+obj);
var ar = document.getElementById("masterdiv").getElementsByTagName("div");
var pm = document.getElementById("masterdiv").getElementsByTagName("img");
var tb = document.getElementById("masterdiv").getElementsByTagName("table");
var tbl = document.getElementById("tbl"+obj);
//var dt = document.getElementById("masterdiv").getElementsByTagName("td");

if (el.style.display != "block") {
for (var i=0; i<ar.length; i++){
if (ar[i].className=="submenu") {
ar[i].style.display = "none";
}
}
for (var j=0; j<pm.length; j++){
if (pm[j].id.indexOf("pm") > -1) {
pm[j].src="images/newsarrowout.gif";
}
}
for (var k=0; k<tb.length; k++){
if (tb[k].id.indexOf("tbl") > -1) {
tb[k].style.background=outcolor;
}
}

el.style.display = "block";
pm["pm"+obj].src="images/newsarrowover.gif";
tbl.style.background=overcolor;
}else{
el.style.display = "none";
pm["pm"+obj].src="images/newsarrowout.gif";
tbl.style.background=outcolor;
}
}
if (persistmenu=="yes" && document.getElementById) {
savemenustate();
}
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function onloadfunction(){
if (persistmenu=="yes"){
var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname
var cookievalue=get_cookie(cookiename)
if (cookievalue!="") {
SwitchMenu(cookievalue);
}
}
}

function savemenustate() {
var inc=1, blockid=""
while (document.getElementById("sub"+inc)){
if (document.getElementById("sub"+inc).style.display=="block"){
blockid=inc
break
}
inc++
}

var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname
var cookievalue=(persisttype=="sitewide")? blockid+";path=/" : blockid
document.cookie=cookiename+"="+cookievalue
}

if (window.addEventListener) {
window.addEventListener("load", onloadfunction, false);
} else if (window.attachEvent) {
window.attachEvent("onload", onloadfunction);
} else if (document.getElementById) {
window.onload=onloadfunction;
}

if (persistmenu=="yes" && document.getElementById) {
window.onunload=savemenustate;
}

function overLink(element,obj) {
var dtt = "dt"+obj;
if (element.style) {
element.style.background=overcolor;
document.getElementById(dtt).className="overtext";
}
}

function outLink(element,obj) {
var dtt = "dt"+obj;
if (element.style) {
element.style.background=outcolor;
document.getElementById(dtt).className="deftext";
}
}
</script>
</head>
<body bgcolor="#abb5c9">
<table width="344" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="344">
<div id="masterdiv" class="masterdiv">
<div class="menutitle" onclick="SwitchMenu('1');">
<table width="344" border="0" cellspacing="0" cellpadding="0" height="19">
<tr height="1">
<td width="344" height="1" background="images/bgdots.gif"></td>
</tr>
<tr height="18">
<td width="344" height="18" onmouseover="overLink(this,'1');" onmouseout="outLink(this,'1');">
<table width="344" border="0" cellspacing="0" cellpadding="0" height="18" id="tbl1">
<tr height="18">
<td width="4" height="18"></td>
<td width="335" height="18" class="deftext" id="dt1">test1</td>
<td valign="bottom" width="5" height="18"><img src="images/newsarrowout.gif" height="5" width="5" border="0" id="pm1" name="pm1"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="submenu" id="sub1">
test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test
</div>

<div class="menutitle" onclick="SwitchMenu('2');">
<table width="344" border="0" cellspacing="0" cellpadding="0" height="19">
<tr height="1">
<td width="344" height="1" background="images/bgdots.gif"></td>
</tr>
<tr height="18">
<td width="344" height="18" onmouseover="overLink(this,'2');" onmouseout="outLink(this,'2');">
<table width="344" border="0" cellspacing="0" cellpadding="0" height="18" id="tbl2">
<tr height="18">
<td width="4" height="18"></td>
<td width="335" height="18" class="deftext" id="dt2">test2</td>
<td valign="bottom" width="5" height="18"><img src="images/newsarrowout.gif" height="5" width="5" border="0" id="pm2" name="pm2"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="submenu" id="sub2">
test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test
</div>
</div>
</td>
</tr>
<tr height="1">
<td width="344" height="1" background="images/bgdots.gif"></td>
</tr>
</table>
</body>
</html>
Avatar billede roenving Novice
07. december 2005 - 10:17 #1
Skal du bare forhindre farveskiftet ved mouseover ?-)

-- så prøv at udkommentere den ene eller begge linjer her:

function outLink(element,obj) {
  var dtt = "dt"+obj;
  if (element.style) {
    element.style.background=outcolor; //denne linje ...
    document.getElementById(dtt).className="deftext"; //eller denne !-)
  }
}
</script>

-- og du udkommenterer ved, som jeg har gjort, at sætte en dobbelt skråstreg foran linjen !-)
Avatar billede dustbunny Nybegynder
07. december 2005 - 11:09 #2
Jeg må nok hellere lige prøve at forklare lidt bedre...

Jeg har nogle felter der skal skifte farve på baggrund og skriften ved mouseover og mouseout. Hvis man klikker på et felt kommer der er nyt felt op under feltet man trykkede på med tekst. Det felt man klikker på skal have samme baggrund og tekst farve som ved mouseover plus at et billed skal skifte til et andet. Alle de andre punkter bliver minimeret og baggrund samt skrift få farve som ved mouseout.

Tror måske det er lidt nemmere at forklare den her. Prøv at gå ind på http://www.vejen-kirke.dk/drop3.html. Det eneste der mangler der er at den skal lave om på baggrunden og skriftens farven ved mouseover og mouseout på de punkter der ikke i forvejen er aktive.
Avatar billede dustbunny Nybegynder
07. december 2005 - 11:10 #3
Billedet i højre side skal ikke ændres ved mouseout eller mouseover.
Avatar billede roenving Novice
07. december 2005 - 11:19 #4
Så kan du f.eks.

-- tilføj i stylesheetet:

.deftext a, .deftext a:link, .deftext a:visited{color: #535353; font-size: 8px; font-family: Verdana, Arial, Helvetica; font-weight: bold;display:block;}
.deftext a:hover, .deftext a:active{color: #fff; font-size: 8px; font-family: Verdana, Arial, Helvetica; font-weight: bold;display:block;background-color:#852C25;}

-- og læg et link rundt om teksten i cellerne:

<td style="width:335px;height:18px" class="deftext" id="dt2"><a href="java script:void(0)">test2</a></td>
Avatar billede dustbunny Nybegynder
07. december 2005 - 12:22 #5
Hmm...ja men det gir ikke lige den effekt jeg skal bruge. Det er hele feltet der skal skifte farve når man føre musen hen over feltet.
Avatar billede dustbunny Nybegynder
07. december 2005 - 13:28 #6
Hmm...jeg vælger bare at bruge den som den er på http://www.vejen-kirke.dk/drop3.html, men jeg synes det kunne være sjovt at få den til at virke så jeg lader lige spørgsmålet stå åbent i et par dage. God fornøjelse :)
Avatar billede roenving Novice
08. december 2005 - 00:13 #7
Har du prøvet ?-)

-- noget af fidusen er faktisk tilknyttet den relativt lille ting: display:block; !-)
Avatar billede dustbunny Nybegynder
08. december 2005 - 01:39 #8
Ja jeg har prøvet, men den laver ikke farven om i hele feltet...og det skulle den gerne.
Avatar billede dustbunny Nybegynder
08. december 2005 - 01:42 #9
Plus at den kun virker når man føre musen hen over linket, det skulle også gerne være hele feltet
Avatar billede dustbunny Nybegynder
24. februar 2006 - 16:48 #10
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester