Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Xenofonte

[Resolvido] Menu acessível via teclado - JAVASCRIPT

Recommended Posts

Galera eu tenho um Menu DropDown aqui feito em Javascript e estou usando no IE.

 

Para quem tem necessidade especial preciso acessar o menu pelas teclas, pressiono 1 aparece menu 1 aperto 2 aparece menu 2. Isso já está fazendo, o erro acontece quando eu estou navegando pelo sub-menu

 

ex: eu tenho o menu Academico

 

ACADEMICO - MENU

horarios de aulas - SubMenu

notas - SubMenu

provas - SubMenu

 

eu aperto 1 ele acessa o academico (desce os submenu) aí eu vou com a teclas percorrendo os sub-menus. O erro acontece somente quando eu estou no primeiro sub-menu(horarios de aulas) e aperto a seta pra cima (como se eu fosse voltar para o Menu Academico) aí ele dá erro de javascrip, aparece assim:

 

Detalhes dos erros da página da Web

 

Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)

Carimbo de data/hora: Wed, 20 May 2009 19:28:13 UTC

 

 

Mensagem: 'document.getElementById(...)' é nulo ou não é um objeto

Linha: 671

Caractere: 5

Código: 0

---------------------------------------------------------------------------------------------

 

Eu só queria que na hora que quando eu estivesse no primeiro sub-menu e apertasse para cima não acontecesse nada. Era só pra não dá esse erro chato, ou seja, estou no primeiro sub-menu aperto seta pra cima é só não acontecer nada.

 

Código do Javascript tá assim:

 

aqui eu chamo no código no menu

Response.Write "onKeyDown=""if(event.keyCode == 40)getProxNode(3,"+CStr(submenu)&");if(event.keyCode == 38)getPrevNode(3,"+CStr(submenu)&");if(event.keyCode == 39)ShowMenu('M4','M4L1'), unShowMenu('M3');if(event.keyCode == 37)ShowMenu('M2','M2L1'),unShowMenu('M3');"">"

 

lembrando que:

event.keycode == 37 (seta pra esqerda)

event.keycode == 38 (seta pra cima)

event.keycode == 39 (seta pra direita)

event.keycode == 40 (seta pra baixo)

 

ou seja, preciso que nessa parte aqui do código, seja consertado:

 

if(event.keyCode == 38)getPrevNode(3,"+CStr(submenu)&");

 

ele vai chamar a função getPrevNode que vai fazer aquilo que tem la embaixo

 

Então, o que eu preciso fazer para quando eu apertar seta pra cima não acontecer nada?

porque pelo o que eu to vendo ele vai fazer novoitem = 1-1 e ficar nulo, sendo esse o erro, se eu não estiver enganado.

 

o que devo fazer? deve ser alguma besteira, mas não to sabendo.

 

 

 

//Função utilizada para o MENU de alunos com NECESSIDADES ESPECIAIS

function getProxNode(menu, subm){

novoitem = subm + 1;

novoitem = "M" + menu + "L" + novoitem;

document.getElementById(novoitem).focus();

}

 

//Função utilizada para o MENU de alunos com NECESSIDADES ESPECIAIS

function getPrevNode(menu, subm){

novoitem = subm - 1;

novoitem = "M" + menu + "L" + novoitem;

document.getElementById(novoitem).focus();

}

 

 

P.S: Pode apagar o outro tópico parecido com esse, porque agora que eu vi qual o erro realmente.

 

 

Agradeço a ajuda.

 

 

Márcio Xenofonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código que monta o menu.

 

'**************************************************************************'

' Montagem do Menu 2 acessibilidade'

if trim(aMenuDinamico(0,0)) <> "" and trim(aMenuDinamico(0,1)) <> "" then

%>

<li id="M2" class="trigger"><a href="#" onMouseOver="unShowMenu('M3'),unShowMenu('M4'),unShowMenu('M5');" onKeyDown="if(event.keyCode == 40)ShowMenu('M2','M2L1')"><%= aMenuDinamico(0,0) %></a>

<%

'*** Loop do Menu 2 acessibilidade '

Response.Write "<ul>"

'Dim submenu:

submenu=1

for iItem=1 to 19

iPos = inStr(1, aMenuDinamico(0, iItem), "$$%%$$")

if iPos = 0 then

exit for

end if

Response.Write "<li><a href=""" & mid(aMenuDinamico(0, iItem), iPos+6) & """ id=""M2L"+CStr(submenu)&""""

Response.Write "onKeyDown=""if(event.keyCode == 40)getProxNode(2,"+CStr(submenu)&");if(event.keyCode == 38)getPrevNode(2,"+CStr(submenu)&");if(event.keyCode == 39)ShowMenu('M3','M3L1'),unShowMenu('M2');"">"

Response.Write trim(mid(aMenuDinamico(0, iItem), 1, iPos-1))

Response.Write "</a></li>"

submenu=submenu+1

next

Response.Write "<span id=M2L"+CStr(submenu)&"></span>"

submenu=1

%>

</ul>

</li>

<%

end if

'*** fim da Montagem do Menu 2 acessibilidade'

'**************************************************************************'

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que estou vendoi o erro esta na seguinte questao você esta tentando pegar um elemento pelo document.getelementById que ou nao existe ou entao esta com nome incorreto. como a sua pagina nao deu para testar va no ff e em ferramentas>console e aaprecera la os erros ae clica no link do erro e você estara no erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.