Problemas entre formularios y java script

Epero que alguien me pueda ayudar estoy teniendo algún problema para mostrar resultados de cuentas matemáticas resultas mediante javascript en un formulario y lo he probado de distintas maneras. Mediante un archivo.js externo como hago otros cálculos en ora página pertnecinte al mismo sitio web que funcionan perfecto y probé colocando el script directo en la página. Y me salta el mismo error ej frm. LblCantid is undefined. Algún elemento del formulario los agarra bien. Les dejo en 1er lugar el código del script y más abajo les dejo solo la parte del código que corresponde al formulario. Esta la parte que, pasa los valores al script y la parte que debe recibir los resultados y mostrarlos en pantalla:

1 código script

El switch es porque va a ver varios t4ipos de hormigón pero por el momento estoy trabajan con 1 solo

<script type="text/javascript">

function Hormigon (frm)
{

calcular = true;
alert("Estoy dentro de hormigon hoja local");
alert("El volumen a construir es de: " + frm.txtVolumen.value);

var tipo;
var proporcionCemento;
var proporcionArena;
var proporcionPiedra;
var desperdicioCemento;
var desperdicioArena;
var desperdicioPiedra;
var desperdicioAgua;
var precioArena;
var precioPiedra;
var precioCemento;
var cantArena;
var cantPiedra;
var cantCemento;
var cementoporbulto;
var total;
var volumen;
var bultos = 10.5;

tipo = frm.SelTipo.value;
alert(tipo)
//calcular=false;
switch (tipo)
{
case "3:2:1":
proporcionCemento = 350;
proporcionArena = 0.56;
proporcionPiedra = 0.84;
desperdicioCemento = 0.05;
desperdicioArena = 0.05;
desperdicioPiedra= 0.05;

alert(proporcionCemento);
// Cemento
// asumiendo que cada bulto es de 50kg
bultos = proporcionCemento / 50 ;

//alert("La cantidad de bultos son " + bultos);
bultos = (bultos * 1.05);
// alert("La cantidad de bultos con desperdicio son: " +bultos);
//bultos = math.round(1.62356);
//alert("El numero de bultos despues del redondeo es de:" +bultos);
//alert(frm.lblCantidad.value)
frm.lblCantidad.value = bultos;
frm.lblPrecio.value = 8;
break;
default:
alert("El tipo de hormigon elegido es invalido");
break;
}
//return calcular;
}
</script>

Código de las 2 partes del mismo formulario

Parte que envía

<form name='frmHormigon' method='POST'>
<table id='Form_de_materiale' align='center'>
<tr>
<td> Tipo de Hormigón </td>
<td>
<!-- Después lo haré mediante php -->
<select class='Selector' name='SelTipo'>
<option value='1:2:2'> Hormigon 1:2:2 </option>
<option value='1:2:3'> Hormigon 1:2:3 </option>
<option value='1:3:3'> Hormigon 1:3:3 </option>
<option value='1:3:6'> Hormigon 1:3:6 </option>
<option selected value='3:2:1'> Hormigon 3:2:1</option>
</select>
</td>
<td> Velumen en m <sup>3</sup> <input type='text' name='txtVolumen'/> </td>
<td> <input type='button' name='btnCalcular' value='Calcular' onclick='Hormigon(this.form);'> </td>
<td> </td>
</tr>
</table>

Parte que recibe y muestra:

<table width='600px' align='center'>
<tr>
<td colspan='4' class='Tabla_titulo'> Presupuestar </td>
</tr>
<tr>
<td width='200px' class='Tabla_titulo'> Material </td>
<td width='200px' class='Tabla_titulo'> Cantidad </td>
<td width='200px' class='Tabla_titulo'> Precio Uni </td>
<td width='200px' class='Tabla_titulo'> Total </td>
</tr>
<tr>
<td width='200px' class='Label' width='200px'> <label name='lblMaterial'></label> </td>
<td width='200px' class='Label' width='200px'> <label name='lblCantidad'></label> </td>
<td width='200px' class='Label' width='200px'> <label name='lblPrecio'></label> </td>
<td width='200px' class='Label' width='200px'> <label name='lblTotal'></label></td>
</tr>
</form>
</table>

1 respuesta

Respuesta
1

Parece que no estás haciendo referencia a la ubicación correcta.

tienes declarado frm como el formulario "frmHormigon"? porque la referencia mediante variable.propiedad es mediante name y si no has declarado frm = document.frmHormigon es normal el error que te da.

Además, label no es un elemento del formulario, ahora mismo no se si javascript busca elementos de formulario dentro de un formulario o si vale cualquier elemento. Si lo que busca es solo tipos de input para manejarlos, tampoco te funcionará eso que pones ya que estas referenciando a un label. Esto tendrás que probarlo.

Si no, por qué no usas un id, ¿aunque sea por comprobar que es problema de referenciado incorrecto? Document. GetElementById('lblCantidad').value

Suerte!

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas