Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) ERRO: document.forms.0.opc_atualizar é nulo ou não é um ob


rlcampos

Pergunta

Olá à todos.

Alguém poderia me ajudar com esse erro?

O depurador do IE está dando o seguinte ERRO: "document.forms.0.opc_atualizar" é nulo ou não é um objeto linha 174 caracter 7.

Esse erro também acontece se tento Excluir um item do carrinho e/ou se tendo finalizar a compra.

O mas estranho é que esse script funciona se a estrutura do código for somente em tabelas. Digo isso, pois acabei de alterar o meu antigo site de tabelas p/ DIV´s e ai ao copiar o código do carrinho.php(tabelas) p/ dentro da DIV "ag_moldura"(no novo arquivo carrinho.php) o código não funcionar mas.

Utilizo o Notepad++ e já conferi todas as TAGs, isto é, tudo o que foi aberto/iniciado também foi fechado/finalizado (<div>... </div>, etc).

Observação:

O depurador do IE mostra o erro "document.forms.0.opc_atualizar" é nulo ou não é um objeto e não "document.forms.[0].opc_atualizar" é nulo ou não é um objeto

No final do post tem o arquivo completo (carrinho.php).

O código ORIGINAL é do imasters "http://imasters.uol.com.br/artigo/2095/php/carrinho_de_compras_simples_usando_arrays_e_sessions_-_parte_09/"

Por favor alguém me ajuda.

Vlw à todos.

JS

&lt;script language="JavaScript"> 
<!-- 
   function enviar(opcao) { 
      //OPÇÃO EXCLUIR SELECIONADA 
     if(opcao == 'E') { 
        document.forms[0].opc_excluir.value = 1; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
     //OPÇÃO ATUALIZAR SELECIONADA 
     if(opcao == 'A') { 
        document.forms[0].opc_atualizar.value = 1; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
     //OPÇÃO FINALIZAR SELECIONADA 
     if(opcao == 'F') { 
        document.forms[0].opc_finalizar.value = 1; 
       document.forms[0].action = "finalizar.php"; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
   }//FECHA FUNCTION 
//--> 
</script>
HTML FORM
<form name="frmCarrinho" method="POST"> 
<input type="hidden" name="opc_excluir"> 
<input type="hidden" name="opc_atualizar"> 
<input type="hidden" name="opc_finalizar"> 

BOTOES
<input type="image" name="btnExcluir" src="excluir.gif" onclick="enviar('E');">   
<input type="image" name="btnAtualiza" src="atualizar.gif" onclick="enviar('A');"> 
<input type="image" name="btnFinaliza" src="finaliza.gif" onclick="enviar('F');"> 
</form>
CÓDIGO COMPLETO - carrinho.php
<? 
//INICIALIZA A SESSÃO 
session_start(); 

//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR 
if(count($_SESSION[cesta]) > 0) { 
   //PEGA A CHAVE DO ARRAY 
   $chave   =   array_keys($_SESSION[cesta]); 
    
   //PEGA OS DADOS DA SESSÃO 
   for($i=0; $i<sizeof($chave); $i++) { 
      //ÍNDICE 
      $indice   =   $chave[$i]; 
     
     //ATRIBUI 
     $cesta[$indice][CODIGO]   =    $_SESSION[cesta][$indice][CODIGO]; 
     $cesta[$indice][ARTISTA]  =    $_SESSION[cesta][$indice][ARTISTA]; 
      $cesta[$indice][preço]    =    $_SESSION[cesta][$indice][preço]; 
      $cesta[$indice][QTDE]     =    $_SESSION[cesta][$indice][QTDE]; 
//      $cesta[$indice][PESO]     =    $_SESSION[cesta][$indice][PESO];     
   }//FECHA FOR 
}//FECHA IF 



//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA 
if($_POST[opc_atualizar]) { 
    
   //RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO 
   $v_atualiza  =  $_POST[a_prod]; 
    
   //PEGA A CHAVE DO ARRAY 
   $chave  =  array_keys($v_atualiza); 
    
   //EXIBE 
   for($i=0; $i<sizeof($chave); $i++) { 
     //PEGA O INDICE DO PRODUTO 
     $indice   =   $chave[$i]; 
     
     //ALTERA A QUANTIDADE DO PRODUTO SELECIONADO 
     $_SESSION[cesta][$indice][QTDE]   =  $v_atualiza[$indice][QTDE]; 
   }//FECHA FOR 
}//FECHA IF 


//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA 
elseif($_POST[opc_excluir]) { 
    
   //RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO 
   $excluir  =  $_POST[check]; 
    
   //EXIBE 
   for($i=0; $i<sizeof($excluir); $i++) { 
     //PEGA O INDICE DO PRODUTO 
     $indice   =   $excluir[$i]; 
     //DESTRÓI A VARIÁVEL ESPECIFICADA 
     unset($_SESSION[cesta][$indice]); 
   }//FECHA FOR 
}//FECHA IF 



//RECEBE O PEDIDO DO USUÁRIO 
elseif($_POST[opc_efetivar]) { 
   //RECEBE AS VARIÁVEIS 
   $v_prod   =  $_POST[txtprod]; 
    
   //PEGA A CHAVE DO ARRAY 
   $chave  =  array_keys($v_prod); 
    
    
   //EXIBE 
   for($i=0; $i<sizeof($chave); $i++) { 
      $indice  =  $chave[$i]; 
      
      //VERIFICA 
      if(!empty($v_prod[$indice][QTDE]) ) { 
      
        //GRAVA NO ARRAY CESTA 
       $cesta[$indice][CODIGO]   =    $v_prod[$indice][CODIGO];       
        $cesta[$indice][ARTISTA]  =    $v_prod[$indice][ARTISTA]; 
        $cesta[$indice][preço]    =    $v_prod[$indice][preço]; 
        $cesta[$indice][QTDE]     =    $v_prod[$indice][QTDE]; 
//         $cesta[$indice][PESO]     =    $v_prod[$indice][PESO];          
      }//FECHA IF 
   }//FECHA FOR 
    
   //GRAVA NA SESSÃO 
   $_SESSION[cesta]        =   $cesta; 
}//FECHA ELSE 
?> 

<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
<meta http-equiv="content-language" content="pt-br" /> 

<meta name="description" content="A" /> 
<meta name="keywords" content="a" /> 
<meta name="robots" content="index,follow" /> 
<meta name="author" content="N" /> 

<title>A</title> 

<link rel="STYLESHEET" type="text/css" href="../common/nc_layout.css" /> 
<link rel="STYLESHEET" type="text/css" href="../common/nc_propriedades.css" /> 
&lt;script type="text/javascript" src="../common/nc_scripts.js"></script> 
&lt;script type="text/javascript" src="../common/scrollovers.js"></script> 
&lt;script type="text/javascript" src="../common/recomenda.js"></script> 

<style type="text/css"> 
<!-- 
#Layer1 { 
   position:absolute; 
   width:86px; 
   height:115px; 
   z-index:1; 
   left: 742px; 
   top: 480px; 
} 
#Layer2 { 
   position:absolute; 
   width:365px; 
   height:81px; 
   z-index:2; 
   visibility: visible; 
   overflow: visible; 
} 
#Layer3 { 
   position:absolute; 
   width:133px; 
   height:150px; 
   z-index:2; 
   left: 128px; 
   top: 198px; 
} 
#Layer5 { 
   position:absolute; 
   width:258px; 
   height:216px; 
   z-index:3; 
   left: 358px; 
   top: 309px; 
   border-color: #b57db4; 
   border-style: solid; 
   border-width: 2px; 
   background-color: #FFFFFF; 
   visibility: hidden; 
} 

#Layer6 { 
   position:absolute; 
   width:477px; 
   height:216px; 
   z-index:3; 
   left: 269px; 
   top: 253px; 
   border-color: #b57db4; 
   border-style: solid; 
   border-width: 2px; 
   background-color: #FFFFFF; 
   visibility: hidden; 
} 

#Layer7 { 
   position:absolute; 
   width:258px; 
   height:216px; 
   z-index:3; 
   left: 358px; 
   top: 309px; 
   border-color: #b57db4; 
   border-style: solid; 
   border-width: 2px; 
   background-color: #FFFFFF; 
   visibility: hidden; 
} 
#Layer8 { 
   position:absolute; 
   width:258px; 
   height:216px; 
   z-index:3; 
   left: 266px; 
   top: 309px; 
   border-color: #b57db4; 
   border-style: solid; 
   border-width: 2px; 
   background-color: #FFFFFF; 
   visibility: hidden; 
} 
#Layer9 { 
   position:absolute; 
   width:121px; 
   height:60px; 
   z-index:3; 
   left: 678px; 
   top: 152px; 
   border-color: #ffffff; 
   border-style: solid; 
   border-width: 2px; 
   visibility: visible; 
} 

a {  color: #993366; text-decoration: none} 
a2 { text-decoration: underline} 
a:hover{  color: #FF459F; text-decoration: none} 

.style1 { 
   color: #FFFFFF; 
   font-family: Arial, Verdana, Helvetica, sans-serif; 
   font-size: 9pt; 
} 
.style2 { 
   color: #000000; 
   font-weight: bold; 
} 
.style3 { 
   color: #FFFFFF; 
   font-family: Arial, Verdana, Helvetica, sans-serif; 
   font-size: 7pt; 
} 
.style5 {color: #FFFFFF; font-weight: bold; } 
.style6 {color: #DEBFD9} 
.style21 {font-size: 9px; color: #FFFFFF} 
.style22 {font-size: 12px; color: #993366; font-family: Verdana, Arial, Helvetica, sans-serif;} 
.style28 {font-size: 14px} 
.style33 { 
   font-family: Verdana, Arial, Helvetica, sans-serif; 
   font-size: 9px; 
   font-weight: bold; 
   color: #999999; 
} 
.style34 { 
   font-family: Verdana, Arial, Helvetica, sans-serif; 
   font-size: 9px; 
   color: #999999; 
} 
.style35 { 
   font-size: 10px; 
   color: #993366; 
   font-family: Verdana, Arial, Helvetica, sans-serif; 
} 
.style36 {color: #660000} 
.style37 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; font-weight: bold; color: #660000; } 

--> 
</style> 

&lt;script language="JavaScript"> 
<!-- 
   function enviar(opcao) { 
      //OPÇÃO EXCLUIR SELECIONADA 
     if(opcao == 'E') { 
        document.forms[0].opc_excluir.value = 1; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
     //OPÇÃO ATUALIZAR SELECIONADA 
     if(opcao == 'A') { 
        document.forms[0].opc_atualizar.value = 1; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
     //OPÇÃO FINALIZAR SELECIONADA 
     if(opcao == 'F') { 
        document.forms[0].opc_finalizar.value = 1; 
       document.forms[0].action = "finalizar.php"; 
       document.forms[0].submit(); 
      }//FECHA IF 
     
   }//FECHA FUNCTION 
//--> 
</script> 

&lt;script> 
<!-- 
function layerSetup(id,visibility) 
{ 
      if(document.getElementById){ 
         this.obj = document.getElementById(id).style; 
         this.obj.visibility = visibility; 
         return this.obj;} 
      else if(document.all){ 
         this.obj = document.all[id].style; 
         this.obj.visibility = visibility; 
         return this.obj;} 
      else if(document.layers){ 
      this.obj = document.layers[id]; 
      this.obj.visibility = visibility; 
      return this.obj;} 
} 
function visVisible(param){ 
      new layerSetup(param,'visible'); 
} 

function visHidden(param){ 
      new layerSetup(param,'hidden'); 
} 

function MM_swapImgRestore() { //v3.0 
      var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; 
} 

function MM_preloadImages() { //v3.0 
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); 
       var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) 
       if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 
} 

function MM_findObj(n, d) { //v4.01 
     var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
     if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
     if(!x && d.getElementById) x=d.getElementById(n); return x; 
} 

function MM_swapImage() { //v3.0 
     var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) 
     if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} 
} 
//--> 
</script> 


</head> 

<body> 
   <div id="tudo"> 
      <div id="topo"> 
         <div id="logo"> 
            <a href="../home.html"> 
               <img src="../figuras/logor.png" alt="" /> 
            </a> 
         </div> 

         <div class="linha"> 
            _________________________________________________________________________________________________________________ 
         </div> 
      </div> <!-- fim da DIV TOPO--> 

      <div class="clr"></div> 
       
      <div id="menu"> 

         <iframe align="left" name="menu" src="../common/menu.html" frameBorder="0" width="178" height="100%" scrolling="no" allowtransparency="true"></iframe> 
         <br /> 
         <br /> 
         <br /> 
         <br /> 
      </div> <!-- fim da DIV MENU--> 

       
      <div id="conteudo"> 
         <div id="ag_moldura"> 
            <h1 id="ag"> 
               <span>A</span> 
            </h1> 
            <br /> 
            <table width="602" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgcolor="#DEBFD9"> 
               <tr> 
                  <td height="59" colspan="4"> 
                     <br /> 
                        <span class="style6">__</span> 
                        <img src="../figuras/ttl_vitrine.png" alt="Vitrine" oncontextmenu="return false" /> 
                     <br /> 
                        <span class="style1"> 
                     <br /> 
                        <span class="style6">___</span>Carrinho de Compras 
                     </span> 
                     <br/>  
                     <? 
                        //EXIBE O CARRINHO SE TIVER PRODUTOS 
                        if(count($_SESSION[cesta]) > 0) { 
                     ?>           
                    
                     <table width="566" align="left"> 
                        <tr> 
                           <td>                      
                              <table width="526" height="264" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="b57db4" bgcolor="ffffff"> 
                                 <tr> 
                                    <td> 
                                       <form name="frmCarrinho" method="POST"> 
                                          <input type="hidden" name="opc_excluir"> 
                                          <input type="hidden" name="opc_atualizar"> 
                                          <input type="hidden" name="opc_finalizar"> 
                                          <table width="95%"  border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF"> 
                                             <tr> 
                                                <td>  
                                                </td> 
                                             </tr> 
                                              
                                             <tr bgcolor="#b57db4"> 
                                                <td width="4%"> </td> 
                                                <td width="7%" align="center"><span class="style2">Qtde</span></td> 
                                                <td width="42%" align="center"><span class="style2">Produto</span></td> 
                                                <td width="23%" align="center"><span class="style2">Valor</span></td> 
                                                <td width="24%" align="center"><span class="style2">Subtotal</span></td> 
                                             </tr> 
                                             <? 
                                                //PEGA A CHAVE 
                                                $chave_cesta  =  @array_keys($_SESSION[cesta]); 
                                            
                                                //EXIBE OS PRODUTOS DA CESTA 
                                                for($i=0; $i<sizeof($chave_cesta); $i++) { 
                                                   $indice   =   $chave_cesta[$i]; 
                                              
                                                   //SUBTOTAIS DE CADA PRODUTO 
                                                   $subtotal =   $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION[cesta][$indice][preço]); 
                                                 
                     /*                               //CALCULO FRETE GERAL 
                                                   $fretetotal =   $_SESSION[cesta][$indice][QTDE] * $_SESSION[cesta][$indice][PESO];                            
                     */                         
                                                   //TOTAL GERAL 
                                                   $total   +=   $subtotal; 
                                             ?> 
                                             <tr> 
                                                <td height="25" align="center"> 
                                                   <input name="check[]" type="checkbox" value="<? echo $indice; ?>"> 
                                                </td> 
                                                 
                                                <td height="25" align="center"> 
                                                   <font face='Arial' size='2'> 
                                                   <input type="text" name="a_prod[<? echo $indice; ?>][QTDE]" value="<? echo $_SESSION[cesta][$indice][QTDE]; ?>" size="3"> 
                                                   </font> 
                                                </td> 
                                                 
                                                <td height="25"> 
                                                   <font face='Arial' size='2'><? echo $_SESSION[cesta][$indice][ARTISTA]; ?> - <? echo $_SESSION[cesta][$indice][CODIGO]; ?></font> 
                                                </td> 
                                                 
                                                <td height="25" align="right"> 
                                                   <font face='Arial' size='2'>R$ <? echo $_SESSION[cesta][$indice][preço]; ?>  </font> 
                                                </td> 
                                                 
                                                <td width="24%" height="25" align="right"> 
                                                   <font face='Arial' size='2'> R$ <? echo number_format($subtotal,2,',','.'); ?>  </font>                            
                                                </td> 
                                             </tr> 
                                             <? 
                                               }//FECHA FOR 
                                             ?> 
                                             <tr> 
                                                <td height="25" colspan="3"> 
                                                   <input type="image" name="btnExcluir" src="excluir.gif" onclick="enviar('E');">   
                                                   <input type="image" name="btnAtualiza" src="atualizar.gif" onclick="enviar('A');"> 
                                                </td> 
                                                <td height="25" bgcolor="#b57db4"> 
                                                   <span class="style5" align="center"> Total s/ frete*: </span>                            
                                                </td> 
                                                <td height="25" bgcolor="#DEBFD9" class="style2" align="right">   R$ <b><? echo number_format($total,2,',','.'); ?>  </b> 
                                                </td> 
                                             </tr> 
                                             <tr> 
                                                <td height="25" colspan="3"> </td> 
                                                <td height="40" colspan="2"> 
                                                   <div align="center"> 
                                                      <input type="image" name="btnFinaliza" src="finaliza.gif" onclick="enviar('F');"> 
                                                   </div> 
                                                </td> 
                                             </tr> 
                                          </table> 
                                       </form> 
                                        
                                       <? 
                                          }//FECHA IF(count) 
                                          else { 
                                       ?> 
                                       <br /><br /><br />  
                                       <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0"> 
                                          <tr> 
                                             <td align='center'> 
                                                <font face='Arial' size='2' color="#006666"><b>Desculpe, mas no momento você não possui nenhumm produto.</b></font>
                                             </td> 
                                          </tr> 
                                       </table> 
                                       <br /> 
                                       <br /> 
                                       <? 
                                       }//FECHA ELSE (count) 
                                       ?> 
                                       <table width="81%"  border="0" align="center" cellpadding="0" cellspacing="0"> 
                                          <tr> 
                                             <td align='center'> 
                                                <div> 
                                                <span class="style33"> 
                                                   *O valor do frete deve ser calculado na Tela de Check-out 
                                                   <!--a href="http://www.correios.com.br/encomendas/precos/default.cfm" target="_blank">clicando aqui >> 
                                                   <img src="../figuras/correios.gif" alt="correios" border="0"> << </a--> 
                                                </span> 
                                                <span class="style35"><br /> 
                                                   <strong>O resultado  desta pesquisa é meramente informativo, devendo ser confirmado no ato da postagem.</strong> 
                                                </span><br /> 
                                                </div> 
                                             </td> 
                                          </tr> 
                                       </table> 
                                    </td> <!-- inclui--> 
                                 </tr> 
                              </table> 
                              <br /> 
                              <br /> 
                              <br />  
                           </td> 
                        </tr> 
                     </table> 
                  </td> 
               </tr> 
            </table> 
            <br /> 
            <br /> 
            <br />    
         </div> <!-- fim da DIV MOLDURA--> 
         <br /> 
      </div> <!-- fim da DIV CONTEUDO --> 

      <div class="clr"></div> 

      <div id="rodape"> 
         <div class="linha"> 
            _________________________________________________________________________________________________________________ 
         </div>    
         <p class="rodape"> 
            © 2008-2009 —  N ® — Todos os direitos reservados | <a href="#"></a> 
         </p> 
      </div> <!-- fim da DIV RODAPE --> 

      <div id="noticias"> 
         <h3>Notícias:</h3> 
            <ul> 
               <li><a href="#"></a></li> 

            </ul> 
      </div> 
   </div> <!-- fim da DIV TUDO --> 

    
<!-- INICIO SCRIPT GOOGLE ANALYTICS --> 
&lt;script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
&lt;script type="text/javascript"> 
try { 
var pageTracker = _gat._getTracker("UA-5553358-1"); 
pageTracker._trackPageview(); 
} catch(err) {}</script> 
<!-- FIM DO SCRIPT  --> 

</body> 
</html>

Editado por rlcampos
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Valeu galera, mas já resolvi fazendo a seguinte alteração:

<script language="JavaScript">
<!--
var todos = document.forms;

   function enviar(opcao) {
      //OPÇÃO EXCLUIR SELECIONADA
      if(opcao == 'E') {
         document.forms['frmCarrinho'].opc_excluir.value = 1;
         document.forms['frmCarrinho'].submit();
      }//FECHA IF
      
      //OPÇÃO ATUALIZAR SELECIONADA
      if(opcao == 'A') {
         document.forms['frmCarrinho'].opc_atualizar.value = 1;
         document.forms['frmCarrinho'].submit();
      }//FECHA IF
      
      //OPÇÃO FINALIZAR SELECIONADA
      if(opcao == 'F') {
         document.forms['frmCarrinho'].opc_finalizar.value = 1;
         document.forms['frmCarrinho'].action = "finalizar.php";
         document.forms['frmCarrinho'].submit();
      }//FECHA IF
      
   }//FECHA FUNCTION
-->
</script>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...