Autor |
Nachricht |
audiokiller
Threadersteller
Dabei seit: 16.11.2006
Ort: Göttingen
Alter: 41
Geschlecht:
|
Verfasst Fr 30.11.2007 17:55
Titel a:visited mit Javascript |
|
|
hi
habe folgende probleme
ich habe mir in javascript eine navileistenfunktion erstellt und möchte folgendes daran ändern
ich möchte besuchte links farbig hervorheben über css wäre das ja a:visited { bla bla bla;}
aber iwie funzt das net in javascript!
dann hab ich folgendes problem wie man am script sehen kann ist die menüleiste eine akkordeon leiste wie die von mootools wenn man halt auf ein link drauf klickt gehen untermenüs auf ich möchte dies untermenüs auf den jeweiligen seiten sichtbar lassen
Zitat: | var activeMenuItem = new Array();
function isUlInArray(inputObj,ulObj){
while(inputObj && inputObj.id!='dhtmlgoodies_listMenu'){
if(inputObj==ulObj)return true;
inputObj = inputObj.parentNode;
}
return false;
}
function showHideSub (e,inputObj)
{
if(!inputObj)inputObj=this;
var parentObj = inputObj.parentNode;
var ul = parentObj.getElementsByTagName('UL')[0];
if(activeMenuItem.length>0){
for(var no=0;no<activeMenuItem.length;no++){
if(!isUlInArray(ul,activeMenuItem[0]) && !isUlInArray(activeMenuItem[0],ul)){
activeMenuItem[no].style.display='none';
activeMenuItem.splice(no,1);
no--;
}
}
}
if(ul.offsetHeight == 0){
ul.style.display='block';
activeMenuItem.push(ul);
}else{
ul.style.display='none';
}
}
function showHidePath(inputObj)
{
var startTag = inputObj;
showHideSub(false,inputObj);
inputObj = inputObj.parentNode;
while(inputObj){
inputObj = inputObj.parentNode;
if(inputObj.tagName=='LI')showHideSub(false,inputObj.getElementsByTagName('A')[0]);
if(inputObj.id=='dhtmlgoodies_listMenu')inputObj=false;
}
}
function initMenu()
{
var obj = document.getElementById('dhtmlgoodies_listMenu');
var linkCounter=0;
var aTags = obj.getElementsByTagName('A');
var activeMenuItem = false;
var activeMenuLink = false;
var thisLocationArray = location.href.split(/\//);
var fileNameThis = thisLocationArray[thisLocationArray.length-1];
if(fileNameThis.indexOf('?')>0)fileNameThis = fileNameThis.substr(0,fileNameThis.indexOf('?'));
if(fileNameThis.indexOf('#')>0)fileNameThis = fileNameThis.substr(0,fileNameThis.indexOf('#'));
for(var no=0;no<aTags.length;no++){
var parent = aTags[no].parentNode;
var subs = parent.getElementsByTagName('UL');
if(subs.length>0){
aTags[no].onclick = showHideSub;
linkCounter++;
aTags[no].id = 'aLink' + linkCounter;
}
if(aTags[no].href.indexOf(fileNameThis)>=0 && aTags[no].href.charAt(aTags[no].href.length-1)!='#'){
if(aTags[no].parentNode.parentNode){
var parentObj = aTags[no].parentNode.parentNode.parentNode;
var a = parentObj.getElementsByTagName('A')[0];
if(a.id && !activeMenuLink){
activeMenuLink = aTags[no];
activeMenuItem = a.id;
}
}
}
}
if(activeMenuLink){
activeMenuLink.className='activeMenuLink';
}
if(activeMenuItem){
if(document.getElementById(activeMenuItem))showHidePath(document.getElementById(activeMenuItem));
}
}
window.onload = initMenu;
|
2. möchte ich das so einstellen das bilder in einem neuen fenster aufgehen - das fenster soll in der bildgröße sein.
danke schon mal im vorraus
|
|
|
|
|
Ypsilon
Dabei seit: 22.01.2007
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Fr 30.11.2007 18:10
Titel
|
|
|
Hi,
falls du das für ein gewisses Projekt machen willst: mach es lieber in CSS Glaub mir, deine Teamkollegen werden es dir danken
Grüße
|
|
|
|
|
Anzeige
|
|
|
Raumwurm
Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Sa 01.12.2007 12:04
Titel
|
|
|
Zu 1.
Öh wieso machst Dus Dir nicht leichter und nimmst
nicht gleich die mootools-Lib? Kannst ja nur die
Sachen reinpacken die Du benötigst - spart Dir eine
Menge Tipp- und Testarbeit. Für das highlight setzen
kannst Du ja den rel-Tag missbrauchen und dort den
Filename reinpacken und per JS dann drüberrauschen
und location.href damit vergleichen - also nur falls
kein php zur Hand.
Zu 2.
Entweder auf der opener.Seite per asset.js (mootools)
das/die Bild(er) nach Klick auf den entsprechenden
Link preloaden -> und die Bildgröße(n) in ein Array
packen - wenn nötig - und dann dem win.open übergeben.
Oder das window öffnen - Bildmaße auslesen und das
Popup resizen - wobei man das in manchen Browsern
unterdrücken kann.
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Sa 01.12.2007 14:11
Titel
|
|
|
Die CSS-Lösung würde ich sofort verwerfen. Komplexere Menustrukturen lassen sich damit kaum crossbrowser-optimiert verwalten, außerdem hat Applikationslogik in der Darstellungsschicht nichts verloren.
Um den Status des Menus zu speichern, kannste bspw. Cookies verwenden. document.cookie wäre die entsprechende Eigenschaft. Cookies bestehen aus separierten Schlüssel/Wert-Paaren.
Bspw.:
phpsessionid=hanswurst; myActiveMenu=1. Du wirst also nicht umhinkommen, deinen Cookiestring zu parsen (die Methode dafür ist String.split())
|
|
|
|
|
|
|
|
Ähnliche Themen |
Lightbox 2 - a:visited
rollover trotz visited
Link visited löschen?
Menü HTML a:visited => eigentlich einfach
[javascript] mit <select> feld wert an javascript funk
Javascript Uhr
|
|