Foros del Web » Programando para Internet » Javascript »

Funcion eliminar: no logro dar con "var importe"

Estas en el tema de Funcion eliminar: no logro dar con "var importe" en el foro de Javascript en Foros del Web. Hola nuevamente! En estos ultimos dias estoy haciendo un intensivo en "como volverte loco con javascript", pues le dedico horas y horas y como que ...
  #1 (permalink)  
Antiguo 19/04/2011, 22:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 14 años, 1 mes
Puntos: 6
Funcion eliminar: no logro dar con "var importe"

Hola nuevamente!

En estos ultimos dias estoy haciendo un intensivo en "como volverte loco con javascript", pues le dedico horas y horas y como que no avanzo mucho si no vuelvo aqui y pregunto, suerte tengo que unos cuantos amigos del foro me han hechado mas que una mano, especialmente laratik. Pero ya me da verguenza de tanto preguntar, lo que mas me da es pena no logro captar AUN, se que lo hare, tal vez mas tarde que temprano, el sentido logico del DOM y otras cosas mas, pero se que en algun momento lo vere mas claro que el agua.

Bueno, a mi pregunta actual:

Tengo la funcion eliminar, no logro determinar como obtener el valor de "var importe", o sea, como estructuro el "de donde saco el valor":

Código:
function eliminar() {
     var parent = this.parentNode;
	 var grandParent = parent.parentNode;
	 var importe = ????????? como obtengo esta variable desde calcInpospak????
	 grandParent.removeChild(parent);
	 flete -= importe;
	 document.getElementById('resFlete').value = flete.toFixed(2);
	 
 }
El resultado de "importe" viene de la funcion "calcInpospak":

Código:
if (Peso >= 1){
		var importe = Peso * tarifa6 * Tasa;
		flete += importe;
		document.getElementById('resFlete').value = flete.toFixed(2);
		var f = document.createElement("div");
		f.innerHTML = (importe.toFixed(2));
		f.className = "classAncho";
		cont.appendChild(f);
		var del = document.createElement("img"); //creo el div para eliminar
        del.src = "images/eliminar.gif";
        del.onclick = eliminar;
		cont.appendChild(del);
		//alert(importe);
		}
Se que Laratik tiene la respuesta a esto, es el arquitecto de las funciones, pero imagino que la diferencia entre yo y ustedes es que ustedes SABEN de esto... yo, quedare calvo de esta...

Gracias!




Aqui esta el codigo completo de la pagina:

Código:
function getHTTPObject(){
   if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
   else if (window.XMLHttpRequest) return new XMLHttpRequest();
   else {
      alert("Your browser does not support AJAX.");
      return null;
   }
}
 
 
function eliminar() {
     var parent = this.parentNode;
	 var grandParent = parent.parentNode;
	 var importe = parseInt(parent.childNodes[7].resFlete);
	 grandParent.removeChild(parent);
	 flete -= importe;
	 document.getElementById('resFlete').value = flete.toFixed(2);
	 
 }
 
 
 // Calculos de sumas e impuestos
 
var sum = 0;
var impuestos = 0;
var total = 0;
var flete = 0;
 
// Change the value of the outputText field
 
function setOutput(){
	
    if(httpObject.readyState == 4){
		var i=0;
		var respuesta = httpObject.responseText.split(",");
		cont = document.createElement("div");
		var res = document.getElementById("resultadosScan1");
		
		var paqNum = document.createElement("div");
		var companyOrigen = document.createElement("div");
		var descContenido = document.createElement("div");
		var Peso = document.createElement("div");
		var Largo = document.createElement("div");
		var Alto = document.createElement("div");
		var Ancho = document.createElement("div");
		
		
		
		paqNum.className = "classpaqNum";
		companyOrigen.className = "classcompanyOrigen";
		descContenido.className = "classdescContenido";
		Peso.className = "classPeso";
		Largo.className = "classLargo";
		Alto.className = "classAlto";
		Ancho.className = "classAncho";
		
        document.getElementById('outputText1').value = httpObject.innerHTML= respuesta[1];
		document.getElementById('outputText3').value = httpObject.innerHTML= respuesta[3];
		document.getElementById('outputText4').value = httpObject.innerHTML= respuesta[4];
		document.getElementById('outputText8').value = httpObject.innerHTML= respuesta[8];
		document.getElementById('outputText9').value = httpObject.innerHTML= respuesta[9];
		document.getElementById('outputText10').value = httpObject.innerHTML= respuesta[10];
		document.getElementById('outputText11').value = httpObject.innerHTML= respuesta[11];
		
		paqNum.innerHTML = httpObject.innerHTML= respuesta[1];
		companyOrigen.innerHTML = httpObject.innerHTML= respuesta[3];
		descContenido.innerHTML = httpObject.innerHTML= respuesta[4];
		Peso.innerHTML = httpObject.innerHTML= respuesta[8];
		Largo.innerHTML = httpObject.innerHTML= respuesta[9];
		Alto.innerHTML = httpObject.innerHTML= respuesta[10];
		Ancho.innerHTML = httpObject.innerHTML= respuesta[11];
		
        cont.appendChild(paqNum);
        cont.appendChild(companyOrigen);
		cont.appendChild(descContenido);
		cont.appendChild(Peso);
		cont.appendChild(Largo);
		cont.appendChild(Alto);
		cont.appendChild(Ancho);

        res.appendChild(cont);
		
		sum = sum+parseInt(respuesta[2]);
		impuestos = sum * 0.16 ;
		total = sum + impuestos;
        document.getElementById("resFlete").value = sum.toFixed(2);
		document.getElementById("impuestos").value = impuestos.toFixed(2);
		document.getElementById("total").value = total.toFixed(2);
		
		calcInpospak()
		
    }
	
}
 
// Implement business logic    
function doWork(){    
	var text = document.getElementById('inputText').value;
    if(text.length == 13) {
		httpObject = getHTTPObject();
		if (httpObject != null) {
			httpObject.open("GET", "engine.php?inputText="
							+text, true);
			httpObject.send(null); 
			httpObject.onreadystatechange = setOutput;
			document.getElementsByName("testForm").item(0).reset();
			document.getElementById('inputText').focus();
			

		}
		
	}
 
}
 
var httpObject = null;
 
function calcInpospak(){
	
	<!--   inicio variables     -->
	var Tasa = 38.00;
	var tarifa1 = 1.90;
	var tarifa2 = 2.00;
	var tarifa3 = 2.10;
	var tarifa4 = 2.60;
	var tarifa5 = 2.80;
	var tarifa6 = 2.95;
	var Peso = document.getElementById('outputText8').value;
	var Largo = document.getElementById('outputText9').value;
	var Ancho = document.getElementById('outputText10').value;
	var Alto = document.getElementById('outputText11').value;
 
	
		
	if (Peso >= 1){
		var importe = Peso * tarifa6 * Tasa;
		flete += importe;
		document.getElementById('resFlete').value = flete.toFixed(2);
		var f = document.createElement("div");
		f.innerHTML = (importe.toFixed(2));
		f.className = "classAncho";
		cont.appendChild(f);
		var del = document.createElement("img"); //creo el div para eliminar
        del.src = "images/eliminar.gif";
        del.onclick = eliminar;
		cont.appendChild(del);
		//alert(importe);
		}
	else {
		// no ha ingresado ningun valor
		}
			
}

Última edición por sentnel; 19/04/2011 a las 23:15
  #2 (permalink)  
Antiguo 22/04/2011, 10:07
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 14 años, 5 meses
Puntos: 63
Respuesta: Funcion eliminar: no logro dar con "var importe"

Para "capturar" el nodo de texto dentro de un elemento se utiliza textContent, por lo cual la función debe quedar más o menos así:

Código Javascript:
Ver original
  1. function eliminar() {
  2.      var parent = this.parentNode;
  3.      var grandParent = parent.parentNode;
  4.      var importe = parseFloat(parent.childNodes[7].textContent);
  5.      flete -= importe;
  6.      document.getElementById('resFlete').value = flete.toFixed(2);
  7.      grandParent.removeChild(parent);
  8.  }

También debes tener en cuenta hacer parseFloat en vez de parseInt, ya que si utilizas este ultimo, los dígitos después del punto serán eliminados, espero que de esta forma tu función de los resultados esperados. SALUDOS.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #3 (permalink)  
Antiguo 22/04/2011, 14:16
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Funcion eliminar: no logro dar con "var importe"

Como no he seguido mucho tus temas porque ya te ayudaban creo que me he perdido un poco en cuanto a tu petición ¿Lo que quieres es esto?
Cita:
function A(){
var privado = 'Esto no se puede leer desde fuera';
}
function B(){
alert(A.privado); // undefined
}
¿O más bien esto?
Cita:
function A(){
return [12, 'abc', true, {}];
}
function B(){
var valor = A();
}
Aparte de eso, textContent no funciona en IE, así que tendrás que usar innerText (en Chrome existen las dos propiedades pero no son iguales, aunque no sé en qué se diferencian ). Por otro lado, no hace falta usar parseFloat porque al estar restando y no sumando, se convierte directamente en un número.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 23/04/2011, 19:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 14 años, 1 mes
Puntos: 6
Respuesta: Funcion eliminar: no logro dar con "var importe"

Gracias!

La solucion de laratik acerto, como siempre. Gracias tambien _cronos2!

Etiquetas: funcion, var
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:59.