объеденить две функции в одну

 
0
 
JavaScript
ava
Alx | 01.11.2004, 15:09
в последнее время я очень беспокоюсь за свои умственные способности! голова совсем не варит, ни на чём не могу сосредоточится! вот пишу скрипт:


<script>
var all = ["x3m",];
all[1] = ["Пункт 1","дтл","имж"];
all[1][1] = ["Пункт 1_1"];
all[1][2] = ["Пункт 1_2"];
all[1][3] = ["Пункт 1_3"];
all[1][3][1] = ["Пункт 1_3_1"];
all[1][3][2] = ["Пункт 1_3_2"];

all[2] = ["Пункт 2"];

all[3] = ["Пункт 3"];
all[3][1] = ["Пункт 3_1"];
all[3][2] = ["Пункт 3_2"];
all[3][2][1] = ["Пункт 3_2_1"];
all[3][2][2] = ["Пункт 3_2_2"];
all[3][2][3] = ["Пункт 3_2_3"];
all[3][2][3][1] = ["Пункт 3_2_3_1"];
all[3][2][3][2] = ["Пункт 3_2_3_2"];
all[3][2][4] = ["Пункт 3_2_4"];
all[3][3] = ["Пункт 3_3"];

writeMain()

function writeMain()
{for (var i=1; i<all.length; i++)
{document.write(all[i][0] + "<br>");
if (all[i].length > 1)
{document.write(writeSub(all[i],1))
}
}
}

function writeSub(theVar,koren)
{var res = "";
var nbsps = "";
for (var k=1; k<=koren; k++)
{nbsps += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
for (var j=1; j<theVar.length; j++)
{res += nbsps + "" + theVar[j][0] + "<br>";
if (theVar[j].length > 1)
{res += writeSub(theVar[j],k++);
}
}
return res;
}

</script>


и не могу объеденить 2 функции в одну! Одна пишет самые верхние разделы, вторая все остальные. Может кто напишет?
Comments (2)
ava
Sardar | 01.11.2004, 20:56 #
Обьясни мне вот этод код:

all[1] = ["Пункт 1","дтл","имж"];
all[1][1] = ["Пункт 1_1"];
all[1][2] = ["Пункт 1_2"];


А еще лучше подумай в целом что ты сделал и сделал ли ты меню удобным и понятным. ;-)
Еще подумай кто будет это меню создавать: генерится на сервере, собирается ручками статичное меню. В первом случае генери сразу разметку, в другом придумаем тебе удобный интерфейс. Скинь весь код.
ava
Alx | 02.11.2004, 14:40 #
Sardar
это я случайно не совсем то выложил -


all[1] = ["Пункт 1"];
all[1][1] = ["Пункт 1_1"];
all[1][2] = ["Пункт 1_2"];


а вообше, я ж пока меню даже не начинал делать! просто в отдельный файл создал, чтобы написать именно эту функцию... правда сейчас столкнулся с одной проблемой... я насамом деле уже написал всё это дело по-другому:

скрипт на странице index.html:

var time = 70;

writeMenu("begin","1");
writeMenu("main","1","Дизайн","#","x3m_img/lnk1op.gif");
writeMenu("begin","1_sub");
writeMenu("sub","1_1","Уникальные разработки","#","x3m_img/page.gif");
writeMenu("sub","1_2","Шаблоны","#","x3m_img/page.gif");
writeMenu("end","1_sub");
writeMenu("end","1");

writeMenu("begin","2");
writeMenu("main","2","Разработка сайтов","#","x3m_img/lnk2op.gif");
writeMenu("begin","2_sub");
writeMenu("sub","2_1","HTML","#","x3m_img/page.gif");
writeMenu("sub","2_2","Flash","#","x3m_img/page.gif");
writeMenu("sub","2_3","Сделай сам","#","x3m_img/page.gif");
writeMenu("end","2_sub");
writeMenu("end","1");


часть основного скрипта script.js

function writeMenu(var_what,var_id,var_name,var_href,var_img)
{var res;
switch (var_what)
{case "begin":
res = '<table cellspacing="0" cellpadding="0" border="0"><tr><td>';
break;

case "end":
res = '</td></tr></table>';
break;

case "main":
res = '<table style="height:22;display:block;" cellspacing="0" cellpadding="0" border="0" id="' + var_id + '"><tr>\n';
res += '<td style="width:0;"></td>\n';
res += '<td style="background: url(\'x3m_img/sub1.gif\');text-align:center;vertical-align:middle;width:20;">';
res += '<img src="x3m_img/minus.gif" onmouseover="setCur(this)" onclick="mainFunc(this.id,0)" id="lnk' + var_id + '">\n';
res += '</td>\n';
res += '<td srtle="text-align:center;vertical-align:middle;width:20;">\n';
res += '<img style="height:18;width:18;" src="' + var_img + '" onmouseover="setCur(this)" onclick="mainFunc(this.id,0)" id="lnk' + var_id + '">\n';
res += '</td>\n';
res += '<td style="text-align:left;vertical-align:top;">\n';
res += '<a class="mainLnk" href="' + var_href + '">' + var_name + '</a>\n';
res += '</td></tr></table>\n';
break;

case "sub":
res = '<table style="height:22;display:block;" cellspacing="0" cellpadding="0" border="0" id="' + var_id + '"><tr>\n';
res += '<td style="background: url(\'x3m_img/line.gif\');width:18;"></td>\n';
res += '<td style="background: url(\'x3m_img/sub1.gif\');width:18;"></td>\n';
res += '<td style="text-align:center;vertical-align:middle;width:20;">\n';
res += '<img style="height:18;width:18;" src="' + var_img + '">\n';
res += '</td>\n';
res += '<td style="text-align:left;vertical-align:top;">\n';
res += '<a href="' + var_href + '" class="subLnk">' + var_name + '</a>\n';
res += '</td>\n';
res += '</tr></table>\n';
break;
}
document.write(res);
}


здесь всё работает замечательно, толбко вот одна проблема: не решил ещё, как определять, является ли пункт последним (это нужно для обозначения линий, т.е. дальше она не пойдёт). Новым способ это можно было бы решить, проверяя не является ли данный элемент массива последним, а тут пришлось бы извращаться. Есть ещё несколько проблем, серьёзных и не очень с обоими вариантами, но склоняюсь к первому, хотя мне кажется, удобнее создавать меню по второму. Через PHP не хочу делать, хочу, чтобы на локалке тоже работало. никому не нужен скрипт, для которого нужен ещё и веб-сервер. допустим челу нужно меню. он ищет его, скачивает моё, моё работает тольк с PHP. а у него нет ни Апаче, и хостинг у него вообще - Narod. Поэтому пишем через JS вышесказанной функцией.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Sardar   Alx
advanced
Submit