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
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
Buena tarde
Adjunto codigos
lo primero que hago es declarar en el archivo aspx
<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
<script language="javascript" src="../script/pedidos/pedidos.js"></script>
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
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
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
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)
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
Hola
Probé el código así
if(document.getElementById("hddVerObservaciones").value=="1")
y asi
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.
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
Claro amigo eso era mire como aparecia el codigo
<input name="ctl00$ContPlace$hddVerObservaciones" type="hidden" id="ctl00_ContPlace_hddVerObservaciones" />
Mil gracias ya lo corregi.
el id aparece con underscores y no con $ como lo estabas intentando, usa los uderscores, si no usas jquery y selectores tipo css
Ya lo logre gracias a tu ayuda.
Muchas gracias
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
var input = $("[id*=hddVerObservaciones]")
y esto te seleccionaría todos los elementos en los cuales el id contenga la cadena "hddVerObservaciones"
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