Ir para conteúdo

POWERED BY:

Arquivado

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

formalivre

[Resolvido] erro: Objeto necessário

Recommended Posts

olá pessoal.

está ocorrendo um erro em meu script. mas só no IE.

segue código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>view card</title>
<script language="JavaScript" type="text/javascript"> 


function retiraAcento(obj)
{
  palavra = String.fromCharCode(event.keyCode);

 var caracteresInvalidos = 'àèìòùâêîôûäëïöüáéíóúãõÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÁÉÍÓÚÃÕÇçABCDEFGHIJLMNOPQRSTUVXZYKW,;:?/_ ';
 var caracteresValidos =   'aeiouaeiouaeiouaeiouaoAEIOUAEIOUAEIOUAEIOUAOCc';
 var acento = "´`^¨~";
 if(acento.indexOf(palavra)!= -1)
 {
   window.event.keyCode = 0;
 }

if (caracteresInvalidos.indexOf(palavra) == -1) 
 {
      if (caracteresValidos.indexOf(palavra) != -1) {
        window.event.keyCode = 0;
        obj.value = obj.value + palavra;
      }
 } 
 else 
 {
          window.event.keyCode = 0;
          nova = caracteresValidos.charAt(caracteresInvalidos.indexOf(palavra));
          obj.value =  obj.value + nova;
 }

}
</script>
<script> 
function ExpandeDiv(id_cadastro)
{
var qtd_div = document.getElementsByTagName('div').length;
var div_sel = document.getElementById(id_cadastro);
var todas_divs;
for (var i = 1; i <= qtd_div; i++)
{
todas_divs = document.getElementById("div"+i);
if (todas_divs.id != id_cadastro)
todas_divs.style.display = 'none';
else
div_sel.style.display = 'block';
}
}
</script>
<link href="css/estilos.css" rel="stylesheet" type="text/css" />
</head>
<body><div id="table">
<div id="cell">
<div id="conteudo">
<div id="logo"><img src="imagens/logo_grande.png" border="0"/></div>
<div id="home">
<a href="#" onclick="ExpandeDiv('div1')"><img src="imagens/bt_login.png" border="0"/></a><a href="#" onclick="ExpandeDiv('div2')"><img src="imagens/bt_cadastro.png" border="0"/></a><div><img src="imagens/linha_horizontal.png"/></div>
<br><br>
<div id="div1" style="display:none";><b>Div 1</b><br><br>
* Div 1
</div>
<div id="div2" style="display:none";><b>Div 2</b><br><br>
* Div 2
</div>
</div>
<div id="rodape">viewcard - © 2011</div>
</body></div>
</div>
</div>

o erro:

Mensagem: Objeto necessário

Linha: 46

Caractere: 1

Código: 0

gostaria de uma ajuda para descobrir este erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O debugador do IE é muito ruim

 

rode no Firefox, e aperte Ctrl+Shift+J

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro está aqui:

if (todas_divs.id != id_cadastro)

 

qr dizer que todas_divs é um nulo.

ou seja:

todas_divs = document.getElementById("div"+i);

não está encontrando um objeto, e falha o resto.

 

olhando o teu loop:

for (var i = 1; i <= qtd_div; i++)

vemos que ele tenta percorrer, mais elementos do que deveria

 

veja:

var qtd_div = document.getElementsByTagName('div').length;

vai retornar muito mais que 2.

 

pois tem a div#rodape, a div#conteudo...

 

você só precisa ajustar esse contador de 'qntas divs' tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se serão sempre apenas 2, ou se você sempre sabe o numero de divs, faz assim:

 

var qtd_div = 2;

no lugar de

var qtd_div = document.getElementsByTagName('div').length;

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.