Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: jabedoya en 21 Mayo 2014, 16:38 pm



Título: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 21 Mayo 2014, 16:38 pm
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

(http://imageshack.com/a/img836/6925/uqcg.jpg)

Ayedenem con este error.

Muchas gracias


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: engel lex en 22 Mayo 2014, 01:37 am
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


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 22 Mayo 2014, 02:09 am
Buena tarde

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

Código
  1. <asp:Content ID="Content1" ContentPlaceHolderID="ContPlace" Runat="Server">
  2. <input id="hddCiudadLocal" type="hidden" runat="server" />
  3. <input id="hddValorMinimoPedido" type="hidden" runat="server" />
  4. <input id="hddVerObservaciones" type="hidden" runat="server" />
  5. <input id="hddOperacion" type="hidden" runat="server" />
  6. <input id="hddPeriodo" type="hidden" runat="server" />
  7. <input id="hddDetallePer" type="hidden" runat="server" />
  8. <input id="hddCcGravadoIVA" type="hidden" runat="server" />
  9. <input id="hddFechaPedido" type="hidden" runat="server" />
  10. <input id="hddClicGuardar" type="hidden" runat="server" />
  11. <input id="hddSubtotal" type="hidden" runat="server" />
  12. <input id="hddTotal" type="hidden" runat="server" />
  13. <input id="hddTotalIVA" type="hidden" runat="server" />
  14. <input id="hddPedido" type="hidden" runat="server" />
  15. <input id="hddCcostos" type="hidden" runat="server" />
  16. <input id="hddDivision" type="hidden" runat="server" />
  17. <input id="hddRegional" type="hidden" runat="server" />
  18. <input type="hidden"  id ="hddProductosSelec" runat="server" />
  19.  

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

Código
  1. function check(txtCantidad,idProducto,Indice, bolPptoCantidad,cantidad,valor,iva, campoResultado){
  2.  
  3. var txtCantidadtemp;
  4.  if(bolPptoCantidad=="1"){
  5.    if(txtCantidad.value>cantidad){
  6.       txtCantidad.focus();
  7.       txtCantidad.select();
  8.       txtCantidad.value = " ";
  9.  
  10.       alert("Esta sobrepasando el presupuesto asignado");
  11.  
  12.  
  13.       return false;
  14.     }
  15.  }
  16.  
  17.        if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1"){
  18.             //elimina los puntos y las comas          
  19.             Subtotal = document.getElementById("ctl00$ContPlace$txtSubtotal").value;
  20.             while(Subtotal.indexOf(",") > 0){
  21.               Subtotal = Subtotal.replace(",","");
  22.              }
  23.         while(Subtotal.indexOf(".") > 0){
  24.               Subtotal = Subtotal.replace(".","");
  25.         }
  26.  
  27.         totalIVA  = document.getElementById("ctl00$ContPlace$txtIVA").value;
  28.         while(totalIVA.indexOf(",") > 0){
  29.               totalIVA = totalIVA.replace(",","");
  30.             }
  31.  
  32.         while(totalIVA.indexOf(".") > 0){
  33.               totalIVA = totalIVA.replace(".","");
  34.         }
  35.         //fin eliminar puntos y comas
  36.     }
  37.  
  38.  
  39.  if(productos[Indice]!=null){
  40.     //alert(productos[Indice].toString());
  41.     var cantidadAnterior = productos[Indice].toString().split("|")  
  42.     if(cantidadAnterior.length>0){
  43.        if(isNaN(parseInt(txtCantidad.value)))
  44.           txtCantidadtemp = 0;
  45.           else
  46.           txtCantidadtemp = parseInt(txtCantidad.value);
  47.  
  48.           //txtCantidad.value = "0";
  49.         Subtotal =parseFloat(Subtotal) - (cantidadAnterior[1] * valor  - txtCantidadtemp * valor);
  50.         totalIVA= parseFloat(totalIVA) - ((cantidadAnterior[1] * valor * (iva/100))  - (txtCantidadtemp * valor *(iva/100)));
  51.         totalPedido=parseFloat(Subtotal) + parseFloat(totalIVA) ;
  52.  
  53.         if(document.getElementById("ctl00$ContPlace$hddVerObservaciones").value=="1"){
  54.            document.getElementById("ctl00$ContPlace$txtSubtotal").value=  formatNmb(Subtotal.toString());
  55.            document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
  56.            document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());              
  57.            document.getElementById("ctl00$ContPlace$txtSubtotal").acceptchanges
  58.         }
  59.       }else{
  60.       /*
  61.            Subtotal = parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + txtCantidad.value * valor;
  62.            totalIVA= parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) + txtCantidad.value * valor*(iva/100);
  63.            totalPedido=parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) ;
  64.            
  65.            document.getElementById("ctl00$ContPlace$txtSubtotal").value= formatNmb(Subtotal.toString());
  66.           document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
  67.           document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());          
  68.           */
  69.       }
  70.   }else{  
  71.   /*
  72.       Subtotal =parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + txtCantidad.value * valor;
  73.       totalIVA= parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) + txtCantidad.value * valor*(iva/100);
  74.       totalPedido=parseFloat(document.getElementById("ctl00$ContPlace$txtSubtotal").value) + parseFloat(document.getElementById("ctl00$ContPlace$txtIVA").value) ;
  75.      
  76.       document.getElementById("ctl00$ContPlace$txtSubtotal").value= formatNmb(Subtotal.toString());
  77.       document.getElementById("ctl00$ContPlace$txtIVA").value= formatNmb(totalIVA.toString());
  78.       document.getElementById("ctl00$ContPlace$txtTotal").value=formatNmb(totalPedido.toString());
  79.      
  80.       */
  81.  
  82.   }
  83.  
  84.  
  85.  productos[Indice]=idProducto + "|" + txtCantidad.value;      
  86.  totalItem = txtCantidadtemp * valor
  87.  //campoResultado.value =totalItem;
  88.  campoResultado.value = formatNmb(totalItem.toString());  
  89.  //CalcularValores(Indice);
  90. }
  91.  

los parametros de input se los envio desde programacion asi
Código
  1. case "buscarProductos":          
  2.                hddVerObservaciones.Value = "0";
  3.  
  4. break;
  5. case "Adicionar":
  6.                hddVerObservaciones.Value = "1";
  7. break;
  8.  



el problema esta en que cuando ingreso con mozilla o chrome en este codigo me genera error
Código
  1. 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


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: engel lex en 22 Mayo 2014, 02:35 am
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 (http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html)


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 22 Mayo 2014, 02:47 am
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


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 22 Mayo 2014, 14:35 pm
Hola

Probé el código así

Código
  1. if(document.getElementById("hddVerObservaciones").value=="1")

y asi

Código
  1. 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.


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: engel lex en 22 Mayo 2014, 15:12 pm
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


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 22 Mayo 2014, 16:06 pm
Claro amigo eso era mire como aparecia el codigo

Código
  1. <input name="ctl00$ContPlace$hddVerObservaciones" type="hidden" id="ctl00_ContPlace_hddVerObservaciones" />
  2.  

Mil gracias ya lo corregi.



Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: engel lex en 22 Mayo 2014, 23:50 pm
el id aparece con underscores y no con $ como lo estabas intentando, usa los uderscores, si no usas jquery y selectores tipo css


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 23 Mayo 2014, 05:16 am
Ya lo logre gracias a tu ayuda.

Muchas gracias


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: engel lex en 23 Mayo 2014, 05:24 am
realmente no conozco de asp y porque rayos le puso ese id al input, pero puedes usar JQuery para facilitarte el trabajo...

haciendo uso de los selectores css (que son super flexibles) podrías hacer algo como

Código
  1. var input = $("[id*=hddVerObservaciones]")

y esto te seleccionaría todos los elementos en los cuales el id contenga la cadena "hddVerObservaciones"


Título: Re: Problemas con if(document.getElementById("").value=="1") en javascript
Publicado por: jabedoya en 23 Mayo 2014, 05:38 am
A mi tambien me parecio extraño que ese id lo asignara de esa forma y solo me di cuenta cuando entre al codigo con ctrl+ u