Problemas con if(document.getElementById("").value=="1") en javascript

Iniciado por jabedoya, 21 Mayo 2014, 16:38 PM

0 Miembros y 3 Visitantes están viendo este tema.

jabedoya

Buen día para todos

Tengo un inconveniente con esta sentencia if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1")

en Internet explore me funciona correctamente pero en CHROME MOZILLA y otros navegadores tengo problemas
Adjunto imagen



Ayedenem con este error.

Muchas gracias

engel lex

da más información... muestra el segmento del código... algo por donde empezar a ayudarte... lo primero que parece es que no está capturando el id, pero con tan poca información no se puede saber que pasa
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jabedoya

Buena tarde

Adjunto codigos
lo primero que hago es declarar en el archivo aspx

Código (asp) [Seleccionar]
<asp:Content ID="Content1" ContentPlaceHolderID="ContPlace" Runat="Server">
<input id="hddCiudadLocal" type="hidden" runat="server" />
<input id="hddValorMinimoPedido" type="hidden" runat="server" />
<input id="hddVerObservaciones" type="hidden" runat="server" />
<input id="hddOperacion" type="hidden" runat="server" />
<input id="hddPeriodo" type="hidden" runat="server" />
<input id="hddDetallePer" type="hidden" runat="server" />
<input id="hddCcGravadoIVA" type="hidden" runat="server" />
<input id="hddFechaPedido" type="hidden" runat="server" />
<input id="hddClicGuardar" type="hidden" runat="server" />
<input id="hddSubtotal" type="hidden" runat="server" />
<input id="hddTotal" type="hidden" runat="server" />
<input id="hddTotalIVA" type="hidden" runat="server" />
<input id="hddPedido" type="hidden" runat="server" />
<input id="hddCcostos" type="hidden" runat="server" />
<input id="hddDivision" type="hidden" runat="server" />
<input id="hddRegional" type="hidden" runat="server" />
<input type="hidden"  id ="hddProductosSelec" runat="server" />


Luego llamo el javascript que lo tengo en un archivo pedidos.js desde la pagina master
Código (asp) [Seleccionar]
<script language="javascript" src="../script/pedidos/pedidos.js"></script>

Código (javascript) [Seleccionar]

function check(txtCantidad,idProducto,Indice, bolPptoCantidad,cantidad,valor,iva, campoResultado){

var txtCantidadtemp;
  if(bolPptoCantidad=="1"){
    if(txtCantidad.value>cantidad){
       txtCantidad.focus();
       txtCantidad.select();
       txtCantidad.value = " ";
     
       alert("Esta sobrepasando el presupuesto asignado");
       
     
       return false;
     }
  }
 
        if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1"){
             //elimina los puntos y las comas         
             Subtotal = document.getElementById("ctl00$ContPlace$txtSubtotal").value;
             while(Subtotal.indexOf(",") > 0){
               Subtotal = Subtotal.replace(",","");
              }
         while(Subtotal.indexOf(".") > 0){
               Subtotal = Subtotal.replace(".","");
         }
           
         totalIVA  = document.getElementById("ctl00$ContPlace$txtIVA").value;
         while(totalIVA.indexOf(",") > 0){
               totalIVA = totalIVA.replace(",","");
             }
                         
         while(totalIVA.indexOf(".") > 0){
               totalIVA = totalIVA.replace(".","");
         }
         //fin eliminar puntos y comas
     }
 

  if(productos[Indice]!=null){
     //alert(productos[Indice].toString());
     var cantidadAnterior = productos[Indice].toString().split("|")   
     if(cantidadAnterior.length>0){
        if(isNaN(parseInt(txtCantidad.value)))
           txtCantidadtemp = 0;
           else
           txtCantidadtemp = parseInt(txtCantidad.value);
           
           //txtCantidad.value = "0";
         Subtotal =parseFloat(Subtotal) - (cantidadAnterior[1] * valor  - txtCantidadtemp * valor);
         totalIVA= parseFloat(totalIVA) - ((cantidadAnterior[1] * valor * (iva/100))  - (txtCantidadtemp * valor *(iva/100)));
         totalPedido=parseFloat(Subtotal) + parseFloat(totalIVA) ;
         
         if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1"){
            document.getElementById("ctl00$ContPlace$txtSubtotal").value=  formatNmb(Subtotal.toString());
            document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
            document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());             
            document.getElementById("ctl00$ContPlace$txtSubtotal").acceptchanges
         }
       }else{
       /*
           Subtotal = parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + txtCantidad.value * valor;
           totalIVA= parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) + txtCantidad.value * valor*(iva/100);
           totalPedido=parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) ;
           
           document.getElementById("ctl00$ContPlace$txtSubtotal").value= formatNmb(Subtotal.toString());
          document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
          document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());           
          */
       }
   }else{   
   /*
      Subtotal =parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + txtCantidad.value * valor;
      totalIVA= parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) + txtCantidad.value * valor*(iva/100);
      totalPedido=parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) ;
     
      document.getElementById("ctl00$ContPlace$txtSubtotal").value= formatNmb(Subtotal.toString());
      document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
      document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());
     
      */
   
   }
 
 
  productos[Indice]=idProducto + "|" + txtCantidad.value;       
  totalItem = txtCantidadtemp * valor
  //campoResultado.value =totalItem;
  campoResultado.value = formatNmb(totalItem.toString()); 
  //CalcularValores(Indice);
}


los parametros de input se los envio desde programacion asi
Código (asp) [Seleccionar]
case "buscarProductos":         
                hddVerObservaciones.Value = "0";

break;
case "Adicionar":
                hddVerObservaciones.Value = "1";
break;




el problema esta en que cuando ingreso con mozilla o chrome en este codigo me genera error
Código (asp) [Seleccionar]
if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1") 

me genera el error que ya mostré en la pregunta  pero en explorer no hay ningun problema.

Muchas gracias

engel lex

el asunto es que el id "ctl00$ContPlace$hddVerObservaciones" no existe realmente, debe ser algo puntual de microsoft que tiende a violar mucho los standards, la forma correcta sería tal cual el id contenido en el input es decir, solo "hddVerObservaciones"

con eso debería bastar, si tienes múltiples "hddVerObservaciones" se comportarán como array aunque no es apropiado usar múltiples elementos con el mismo id

así está establecido en el standard
http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jabedoya

seria así if(document.getElementById("hddVerObservaciones").value=="1")

Mañana lo probare en el código a ver si funciona y te cuento aunque no recuerdo si lo había puesto así antes  y me salia lo mismo.

Muchas Gracias

jabedoya

Hola

Probé el código así

Código (asp) [Seleccionar]
if(document.getElementById("hddVerObservaciones").value=="1")

y asi

Código (asp) [Seleccionar]
if(document.getElementById("hddVerObservaciones")=="1")


Y tampoco me funciono si gue saliendo lo mismo Uncaught Typerror: Cannot read property'value' of null.

No se que ponerle ya.

engel lex

estas seguro que el elemento esta apareciendo en el navegador? (presiona ctrl +u para ver el código fuente y usa ctrl+f para buscar "hddVerObservaciones" y confirmar que existe exactamente con ese nombre)

porque el getElementById esta bien y me corre bien creando un elemento de ese nombre
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jabedoya

Claro amigo eso era mire como aparecia el codigo

Código (asp) [Seleccionar]
<input name="ctl00$ContPlace$hddVerObservaciones" type="hidden" id="ctl00_ContPlace_hddVerObservaciones" />


Mil gracias ya lo corregi.


engel lex

el id aparece con underscores y no con $ como lo estabas intentando, usa los uderscores, si no usas jquery y selectores tipo css
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jabedoya