Avatar billede hansdam Nybegynder
11. januar 2004 - 15:06 Der er 18 kommentarer og
1 løsning

CSS/Javascript problem

Jeg har her i nat siddet og lavet en ny menu til min hjemmeside. Jeg har brugt CSS og JavaScript til denne.
Problemet er, at efter jeg har lavet dette script, så kan jeg ikke markere noget som helst på nogen af de sider hvor menuen er på. Jeg har ikke så meget forstand på JavaScript eller CSS, så jeg har ingen ide om hvor fejlen ligger. Men i kan jo se om i ka'
CSS'en:
span.tekst { color:#FFFFFF; text-decoration:none;font-size: 12px;font-family:Times new Rowman}
span.tekst:hover { color:#000000; text-decoration:none;font-size: 12px;font-family:Times new Rowman}
span.tekst:active { color:#FFFFFF; text-decoration:none;font-size: 12px;font-family:Times new Rowman}

a.tekstu { color:#FFFFFF; text-decoration:none;font-size:13px;font-family:Times new Rowman}
a.tekstu:hover { color:#000000; text-decoration:none;font-size:13px;font-family:Times new Rowman}
a.tekstu:active { color:#000000; text-decoration:none;font-size:13px;font-family:Times new Rowman}

.Menu
{width: 100%; height: 28px; padding:1 0 2 5; border-right: #1B65AF 1xp solid;
border-top: #1B65AF 1px solid; border-left: #1B65AF 1px solid; border-bottom: #1B65AF 1xp solid; background-color: #053165; cursor:hand; color:#1B65AF;}
.Option
{width: 100%; height: 24px; padding:2 5 3 12; border: 1 1 1 1 solid #ffffff; background-color: #0951AA; cursor:hand;}
.Options {padding:1 1 1 1}
.myimgsm
{width:16;height:16;vertical-align: middle;}
.myimgbi
{width:20;height:20;vertical-align: middle;}

JavaScriptet:
    document.onselectstart = function() { return false; }
   
    // Menu Lateral
    if (document.getElementById){
    document.write('<style type="text/css">\n')
    document.write('.options{display: none;}\n')
    document.write('</style>\n')
    }
    function SwitchMenu(obj){
        if(document.getElementById){
        var el = document.getElementById(obj);
        var ar = document.getElementById("masterdiv").getElementsByTagName("span");
            if(el.style.display != "block"){
                for (var i=0; i<ar.length; i++){
                    if (ar[i].className=="options")
                    ar[i].style.display = "none";
                }
                el.style.display = "block";
            }else{
                el.style.display = "none";
            }
        }
    }

/Hans
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 15:10 #1
Har du et link i stedet - Det er nemmere at overskue :))
Avatar billede hansdam Nybegynder
11. januar 2004 - 15:11 #2
Jeg laver lige et lille eksempel 2 sek.
Avatar billede hansdam Nybegynder
11. januar 2004 - 15:45 #3
Så er den klar...
http://www.hdhp.dk/MenuEks/
Avatar billede thesurfer Nybegynder
11. januar 2004 - 16:07 #4
"Hej - dette kan ikke markeres".. Jo det ka' :)

Hvad er det lige der ikke vil som du vil? Hvad er fejlen?
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:09 #5
Jeg har tidliger lavet en lidt anden version som nok er lidt mere optimal (ret selv css´en):

<html>
  <head>
 
  <style>
 
  .spacer{ width:20}
 
  .myBody,table,div{
font-family : Verdana, Arial;
font-size : 9px ;
color : #aaaaaa;
background-color: #006699;
margin-top:0;
margin-left:0;
border:0;
}

a:link{color: #ffffff;text-decoration: none;}
a:visited{color: #ffffff;text-decoration: none;}
a:active{color: #FFCCFF;text-decoration: underline;}
a:hover{color: #FFCC00;text-decoration: underline;}
 
  </style>
 
    <script language="javascript">
      <!--
   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

forrige = false;

function vis(id){
if(forrige&&forrige!=id){
var styleObj = (ns4)? document.layers[forrige] : (ie4)? document.all[forrige].style : document.getElementById(forrige).style;
styleObj.display = "none"
}
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = ""
visible= 1
}else{
styleObj.display = "none"
visible = 0
    }
    forrige = id;
}

      </script>
  </head>

  <body class="myBody">
 
  <div id="menu1" onclick="vis('undermenu1')" style="cursor:hand;display:inline">Vis Menu 1</div>
<br>
      <div id="undermenu1" style="display:none">
      <table border="0">
        <tr>
        <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">1.1</a></td>
    </tr>
    <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">1.2</a></td>
   
        </tr>
</table>
      </div>
    <div id="menu2" onclick="vis('undermenu2')" style="cursor:hand;display:inline">Vis Menu 2</div>
    <br>
      <div id="undermenu2" style="display:none">
      <table border="0">
        <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">2.1</a></td>
        </tr>
    <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">2.2</a></td>
        </tr>
</table>
      </div>

    <div href="#" id="menu3" onclick="vis('undermenu3')" style="cursor:hand;display:inline">Vis Menu 3</div>
      <div id="undermenu3" style="display:none">
      <table border="0">
        <tr>
        <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">3.1</a></td>
        </tr>
</table>
      </div>

  </body>
</html>
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:12 #6
Har også en version med cookies liggende så den husker hvilket menupunkt man valgte når siden skifter.
Avatar billede hansdam Nybegynder
11. januar 2004 - 16:13 #7
Send den som et svar - og du får points (hvis du vil)
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:15 #8
Hvis du kan bruge den...
Avatar billede hansdam Nybegynder
11. januar 2004 - 16:18 #9
Jammen det kan jeg godt...
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:18 #10
Der er 2 store forskelle på din og min (ho ho) ;-)

1. Jeg skifter ikke classname (som er noget tung at lege med)
2. Jeg husker hvilken der er valgt således at jeg ikke skal løbe 400 igennem for at lukke dem alle.
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:20 #11
Nu har jeg lagt en <table> ind i hver menupunkt det behøves selvfølgelig ikke.
Avatar billede hansdam Nybegynder
11. januar 2004 - 16:22 #12
Kan du ikke sende den menu/skrive den her i indlægget?
Avatar billede hansdam Nybegynder
11. januar 2004 - 16:22 #13
- Jeg forstår ikke helt hvad du mener..
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:25 #14
hver evigt eneste menublok ser sådan her ud :

<div href="#" id="menu3" onclick="vis('undermenu3')" style="cursor:hand;display:inline">Vis Menu 3</div>
      <div id="undermenu3" style="display:none">
      <table border="0">
        <tr>
        <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">3.1</a></td>
        </tr>
</table>
      </div>

menu3 skal rettes til det nr du nu vil give dem (menu1, menu2, menu3 o.s.v.) og de 2 steder der står "undermenu3" skal passe sammen. altså være ens.
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:25 #15
Hvis det er cookie versionen du vil have så  her :

<html>
  <head>
 
  <style>
 
  .spacer{ width:20}
 
  .myBody,table{
font-family : Verdana, Arial;
font-size : 9px ;
color : #aaaaaa;
background-color: #006699;
margin-top:0;
margin-left:0;
border:0;
}

a:link{color: #ffffff;text-decoration: none;}
a:visited{color: #ffffff;text-decoration: none;}
a:active{color: #FFCCFF;text-decoration: underline;}
a:hover{color: #FFCC00;text-decoration: underline;}
 
  </style>
 
    <script language="javascript">
      <!--
   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

var forrige = false;

function vis(id){
if(forrige&&forrige!=id){
var styleObj = (ns4)? document.layers[forrige] : (ie4)? document.all[forrige].style : document.getElementById(forrige).style;
styleObj.display = "none"
saet(forrige,0)
}
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = ""
visible= 1
}else{
styleObj.display = "none"
visible = 0
    }
    saet(id,visible)
    forrige = id;
}
 
    function saet (name, value) {
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var expires = (argc > 2) ? argv[2] : null;
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : false;
      document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }


function hentKage2 (name) {
var cook = document.cookie;
var cookNavn = name + "=";
var laengde = cook.length;

var start = 0;
while (start < laengde) {
var slut = start + cookNavn.length;
if (cook.substring(start, slut) == cookNavn) {
var vend = cook.indexOf (";", slut);
if (vend == -1) vend = laengde;

return unescape(cook.substring(slut, vend));
}

start = cook.indexOf(" ", start) + 1;
if (start== 0) break;
}
return null;
}


      function init(){
antalLag = 3;
if(document.cookie){
for (a=1;a<=antalLag;a++){
tjeck = hentKage2('undermenu'+a)
if(tjeck==1){
vis('undermenu'+a)
            }
        }
    }
}
      -->
      </script>
  </head>

  <body onload="init()" class="myBody">
 
  <div id="menu1" onclick="vis('undermenu1')" style="cursor:hand;display:inline">Vis Menu 1</div>
<br>
      <div id="undermenu1" style="display:none">
      <table border="0">
        <tr>
        <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">1.1</a></td>
    </tr>
    <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">1.2</a></td>
   
        </tr>
</table>
      </div>
    <div id="menu2" onclick="vis('undermenu2')" style="cursor:hand;display:inline">Vis Menu 2</div>
    <br>
      <div id="undermenu2" style="display:none">
      <table border="0">
        <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">2.1</a></td>
        </tr>
    <tr>
    <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">2.2</a></td>
        </tr>
</table>
      </div>

    <div href="#" id="menu3" onclick="vis('undermenu3')" style="cursor:hand;display:inline">Vis Menu 3</div>
      <div id="undermenu3" style="display:none">
      <table border="0">
        <tr>
        <td class="spacer">&nbsp;</td>
    <td><a href="#" target="_blank">3.1</a></td>
        </tr>
</table>
      </div>

  </body>
</html>
Avatar billede hansdam Nybegynder
11. januar 2004 - 16:26 #16
takker mange gange
Avatar billede nikolajdu Nybegynder
11. januar 2004 - 16:31 #17
No problemos :))
Avatar billede hansdam Nybegynder
12. januar 2004 - 20:44 #18
Jeg har lige to kommentarer:
1)Jeg har nu fundet fejlen hvorfor jeg ikke kunne markere noget som helst på min side, når jeg havde min nye menu inde. Nemlig:   
document.onselectstart = function() { return false; }
skal ændres til:
document.onselectstart = function() { return tru; }
så virker det hele perfekt :-D
2) Lige lidt til thesurfer
Ja du kan godt markere teksten hvis du bruger Mozilla... Men nu er det sådan at jeg lavet primært mine sider så de også virker perfekt i IE
Avatar billede hansdam Nybegynder
12. januar 2004 - 20:45 #19
Selvfølgelig:
document.onselectstart = function() { return true; }
sorry
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
Kurser inden for grundlæggende programmering

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