Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк в книге Дунаева или...? 
:(
    Опции темы
Finder128
Дата 8.7.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 15.3.2008

Репутация: нет
Всего: нет



По книге В.Дунаева "Самоучитель JavaScript" осваиваю язык. Переписал скрипт из главы "Настоящее меню" из книги (у меня pdf-вариант). Вроде всё точно, сверял. Выдаёт синтаксическую ошибку (строка 149, в функции hideLayer, скрипт menu_bld.js. Вот полный код этого скрипта. 
Код


var ie=document.all ? true: false // есть ли что-нибудь в документе?
var overBox=''
var timerID
// заготовки элементов Html-кода
var barHtml=new Array()
barHtml[0]='<div id="divbarpos'
barHtml[1]='" style="position:absolute;left:'
barHtml[2]='px:top:'
barHtml[3]='px;" onmouseover="openbox('
barHtml[4]=')" onmouseout="closebox ('
barHtml[5]=')" onclick="clickbox('
barHtml[6]=')"><table cellpadding="0" cellspacing="0"><tr><td bgcolor="'
barHtml[7]='"><table cellpadding="0" cellspacing="1" border="0"><tr><td class="mnubarpos" id="mnubarpos'
barHtml[8]='"width="'
barHtml[9]='" bgcolor="'
barHtml[10]='" style="color:'
barHtml[11]=';font-size:'+cFontSize+';font-family:'+cFontFamily+';">'
barHtml[12]='</td></tr></table></td></tr></table></div>'
var boxHtml=new Array()
boxHtml[0]='<div id="divbox'
boxHtml[1]='" style="position:absolute;visibility:hidden;left:'
boxHtml[2]='px:top;'
boxHtml[3]='px:top;font-family:'+cFontFamily+'" onmouseout="closebox('
boxHtml[4]=')"<table cellpadding="0" cellspacing="0"><tr><td bgcolor="'
boxHtml[5]='"><table class="mnubox" id="mnubox'
boxHtml[6]='" cellpadding="0" cellspacing="1" border="0" >'
boxHtml[7]='<span id="divboxpos'
boxHtml[8]='" onmouseover="openboxpos('
boxHtml[9]=')" onmouseout="closeboxpos('
boxHtml[10]=')" onclick="clickboxpos('
boxHtml[11]=')"><tr><td class="mnuboxpos" id="mnuboxpos'
boxHtml[12]='" width="'
boxHtml[13]='" bgcolor="'
boxHtml[14]='" style="color:'
boxHtml[15]=';font-size:'+cFontSize+'">'
boxHtml[16]='</td></tr></span>'
boxHtml[17]='</table></td></tr></table></div>'

function buildMenu(){ // построение меню (главная функция)
if (ie){
buildMenuBar();
buildSubMenu();
if (selfPos) PosMenu();
ResizeSubMenu();
}

}

function buildMenuBar(){ // построение горизонтального меню
for (i=0;i<menu.length;i++){
var s=barHtml[0]+i+barHtml[1]+menu[i][0][3]+barHtml[2]+
menu[i][0][4]+barHtml[3]+i+barHtml[4]+i+barHtml[5]+i+
barHtml[6]+clBorder+barHtml[7]+i+barHtml[8]+menu[i][0][5]+
barHtml[9]+ClBgInact+barHtml[10]+clFnInact+barHtml[11]+
document.writeln(s);
}
function buildSubMenu(){ // построение подменю
for (i=0;i<menu.length;i++){
if (menu[i].length>1){
var s=boxHtml[0]+i+boxHtml[1]+menu[i][0][6]+boxHtml[2]+
menu[i][0][7]+boxHtml[3]+i+boxHtml[4]+clBorder+boxHtml[5]+
i+boxHtml[6]
for (j=1;j<menu.length;j++){
var s1=i+'' + i
var s2=i+''+j
s+=boxHtml[7]+s2+boxHtml[8]+s1+boxHtml[9]+s1+
boxHtml[10]+s1+boxHtml[11]+s2+boxHtml[12]+menu[i][j][0]+
boxHtml[13]+clBgInact+boxHtml[14]+clFnInact+boxHtml[15]+
menu[i][j][0]+boxHtml[16]
}
s+=boxHtml[17]
document.writeln(s)
}
}
}
function posMenu(){
for (i=0;i<menu.length;i++){
barCurr=document.all['divbarpos'+1]
if (i>0){
barPrev=document.all['divbarpos'+(i-1)]
barCurr.style.left=barPrev.offsetLeft+
barPrev.offsetWidth-1
}
if (menu[i].length>1){
boxCurr=document.all['divbox'+i]
boxCurr.style.pixelTop=barCurr.offsetTop+
barCurr.offsetHeight-1
boxCurr.style.pixelLeft=barCurr.offsetLeft
}
}
}
function ResizeSubMenu(){
for (i=0;i<menu.length;i++){
if (menu[i].length>1 && menu[i][0][8]<=0){
el=document.all['mnubox'+i]
w=document.all['divbarpos'+i].offsetWidth
if (el.offsetWidth<w) el.style.width=w
}
}
}
function openbox(x){
paintLayer('mnubarpos'+x,active=true)
showLayer('divbox'+x)
for (i=0;i<menu.length;i++) if (i !=x) closebox(i,0)
overbox='divbox'+x
window.status=menu[x][0][2]
}
function closebox(x,timeout){
paintLayer('mnubarpos'+x,active=false)
clearTimeout(timerID)
if (timeout==0) hideLayer('divbox'+x)
else timerID=setTimeout('hideLayer("divbox'+x+'")',
closeTimeout)
overbox=''
window.status=defaultStatus
}
function clickbox(x){
clickMenu(menu[x][0][1])
}
function openboxpos(x,y){
paintLayer('mnuboxpos'+x+'_'+y,active=true)
overbox='divbox'+x
window.status=menu[x][y][2]
}
function closeboxpos(x,y){
window.status=defaultStatus
paintLayer('mnuboxpos'+x+'_'+y,active=false)
}
function clickboxpos(x,y){
clickMenu(menu[x][y][1])
}
function clickMenu(s){
if (s.indexOf('javascript:')==0) eval(s);
else if (s !='') window.location.href=s;
}
function paintLayer(layerID,active){
if (layer==document.all[layerID]){
if (active) {clBg=clBgAct;clFn=clFnAct}
else {clBg=clBgInact;clFn=clFnInact}
layer.style.backgroundColor=clBg
layer.style.color=clFn
}
}
function showLayer(layerID){
if (layer==document.all[layerID])layer.style.visibility=='visible'
}
function hideLayer(layerID){
if (layer==document.all[layerID]) && (overBox !=layerID))
document.all[layerID].style.visibility='hidden'
}


PM MAIL   Вверх
Itsys
Дата 8.7.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



document.all понимает только IE, для того, чтобы понимали все надо писать document.getElemetById('').

ЗЫ и Вообще не очень хорошим языком все написано  smile, я бы сказал даже очень ужасным, не советовал бы никому учиться по такой книжке....
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.