Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Javascript problemėlė

Parašė Creatium· 2009 Gru. 4 20:12:12
#1

Sveiki. Visų pirma noriu paprašyti, kad rašytumėte tik tie, kurie tikrai žinote.

Štai mano bėda: turiu js kodą, kuris padaro meniu-medį. Tai meniu, turintis kategorijas ir sub-kategorijas ir t.t. Meniu pvz.:

>Mašinos
-->Volvo
-->BMW
---->1992
---->1993

Ir kuomet tarkim paspaudžiu ant nuorodos 1992, man atidaro puslapį apie 92 m. BMW mašinas. Kuomet aš atsidariau puslapį 1992, tas meniu turi išlikti atsidaręs iki tos nuorodos (1992). Jeigu spaudžiu ant Volvo - meniu po perkrovimo lieka atsidaręs tik iki Volvo. Bėda tame, kad kai atidarau psl. 1992 arba Volvo, meniu užsidaro iki Mašinos, nors, kaip sakiau, turėtų likti atsidaręs iki tam tikros nuorodos. Žemiau pateikiu meniu kodą:

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 = true;
var activeMenuLink = true;
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 && aTags[no].parentNode.parentNode.id!='dhtmlgoodies_listMenu'){
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;




Žinau, kad nuo funkcijos function initMenu() prasideda klaida, kuomet arba nepatikrina psl. adreso, ar dar kas. Kas galite - parašykite klaidos ištaisymą. Ačiū

Redagavo Creatium· 2009 Gru. 4 20:12:40