Buenas.
Verán, tengo el siguiente código (léanlo después de leer la explicación que hay al terminar el código) :
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Calculadora para WoW PowerLeveling</title>
<script language="JavaScript">
$res = 0;
$pSec1 = 1;
$pSec2 = 3;
$pSec3 = 5;
$pSec4 = 8;
$pSec5 = 10;
$pSec6 = 14;
$pSec7 = 18;
$pSec8 = 25;
$nSec1 = 0.10;
$nSec2 = 0.30;
$nSec3 = 0.50;
$nSec4 = 0.80;
$nSec5 = 1.10;
$nSec6 = 1.50;
$nSec7 = 2;
$nSec8 = 3;
$nSec9 = 4.5;
$sec1 = 10;
$sec2 = 20;
$sec3 = 30;
$sec4 = 40;
$sec5 = 50;
$sec6 = 60;
$sec7 = 70;
$sec8 = 80;
$sec9 = 85;
function iden() {
$ini = document.getElementById("4");
$inicial = $ini.value;
$fin = document.getElementById("5");
$final = $fin.value;
if($inicial<=$sec1) {
sec1();
}
else if($inicial<=$sec2 && $inicial>$sec1) {
sec2();
}
else if($inicial<=$sec3 && $inicial>$sec2) {
sec3();
}
else if($inicial<=$sec4 && $inicial>$sec3) {
sec4();
}
else if($inicial<=$sec5 && $inicial>$sec4) {
sec5();
}
else if($inicial<=$sec6 && $inicial>$sec5) {
sec6();
}
else if($inicial<=$sec7 && $inicial>$sec6) {
sec7();
}
else if($inicial<=$sec8 && $inicial>$sec7) {
sec8();
}
else if($inicial<=$sec9 && $inicial>$sec8) {
sec9();
}
}
function sec1() {
if($final>$sec1) {
$aux = $inicial;
$aux = $sec1 - $aux;
$res = $res + ($aux * $nSec1);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec1);
document.formulario.precio.value = $res;
}
}
function sec2() {
if($final>$sec2) {
$aux = $inicial;
$aux = $sec2 - $aux;
$res = $res + ($aux * $nSec2);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec2);
document.formulario.precio.value = $res;
}
}
function sec3() {
if($final>$sec3) {
$aux = $inicial;
$aux = $sec3 - $aux;
$res = $res + ($aux * $nSec3);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec3);
document.formulario.precio.value = $res;
}
}
function sec4() {
if($final>$sec4) {
$aux = $inicial;
$aux = $sec4 - $aux;
$res = $res + ($aux * $nSec4);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec4);
document.formulario.precio.value = $res;
}
}
function sec5() {
if($final>$sec5) {
$aux = $inicial;
$aux = $sec5 - $aux;
$res = $res + ($aux * $nSec5);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec5);
document.formulario.precio.value = $res;
}
}
function sec6() {
if($final>$sec6) {
$aux = $inicial;
$aux = $sec6 - $aux;
$res = $res + ($aux * $nSec6);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec6);
document.formulario.precio.value = $res;
}
}
function sec7() {
if($final>$sec7) {
$aux = $inicial;
$aux = $sec7 - $aux;
$res = $res + ($aux * $nSec7);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec7);
document.formulario.precio.value = $res;
}
}
function sec8() {
if($final>$sec8) {
$aux = $inicial;
$aux = $sec8 - $aux;
$res = $res + ($aux * $nSec8);
finalizar();
}
else {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec8);
document.formulario.precio.value = $res;
}
}
function sec9() {
$aux = $final - $inicial;
$res = $res + ($aux * $nSec9);
document.formulario.precio.value = $res;
}
function finalizar() {
if($final<=$sec2 && $final>$sec1) {
$res = $res + $pSec1;
$aux = $final;
$aux = $aux - $sec1;
$res = $res + ($aux * $nSec2);
document.formulario.precio.value = $res;
}
else if($final<=$sec3 && $final>$sec2) {
$res = $res + $pSec1 + $pSec2;
$aux = $final;
$aux = $aux - $sec2;
$res = $res + ($aux * $nSec3);
document.formulario.precio.value = $res;
}
else if($final<=$sec4 && $final>$sec3) {
$res = $res + $pSec1 + $pSec2 + $pSec3;
$aux = $final;
$aux = $aux - $sec3;
$res = $res + ($aux * $nSec4);
document.formulario.precio.value = $res;
}
else if($final<=$sec5 && $final>$sec4) {
$res = $res + $pSec1 + $pSec2 + $pSec3 + $pSec4;
$aux = $final;
$aux = $aux - $sec4;
$res = $res + ($aux * $nSec5);
document.formulario.precio.value = $res;
}
else if($final<=$sec6 && $final>$sec5) {
$res = $res + $pSec1 + $pSec2 + $pSec3 + $pSec4 + $pSec5;
$aux = $final;
$aux = $aux - $sec5;
$res = $res + ($aux * $nSec6);
document.formulario.precio.value = $res;
}
else if($final<=$sec7 && $final>$sec6) {
$res = $res + $pSec1 + $pSec2 + $pSec3 + $pSec4 + $pSec5 + $pSec6;
$aux = $final;
$aux = $aux - $sec6;
$res = $res + ($aux * $nSec7);
document.formulario.precio.value = $res;
}
else if($final<=$sec8 && $final>$sec7) {
$res = $res + $pSec1 + $pSec2 + $pSec3 + $pSec4 + $pSec5 + $pSec6 + $pSec7;
$aux = $final;
$aux = $aux - $sec7;
$res = $res + ($aux * $nSec8);
document.formulario.precio.value = $res;
}
else if($final<=$sec9 && $final>$sec8) {
$res = $res + $pSec1 + $pSec2 + $pSec3 + $pSec4 + $pSec5 + $pSec6 + $pSec7 + $pSec8;
$aux = $final;
$aux = $aux - $sec8;
$res = $res + ($aux * $nSec9);
document.formulario.precio.value = $res;
}
}
</script>
</head>
<body>
<center>
<form name="formulario">
<br />
Nombre del personaje: <input type="text" id="1"> <br />
Servidor: <input type="text" id="2"> <br />
Facción: <input type="text" id="3"> <br />
Nivel inicial: <input type="text" id="4"> <br />
Nivel final: <input type="text" id="5"> <br />
Correo electrónico: <input type="text" id="6"> <br /><br />
<input type="button" value="Calcular" onclick="iden()"> <br /><br />
Precio final: <input type="text" readonly="true" name="precio">
</form>
</center>
</body>
</html>
Explico: Básicamente, introduces un nivel inicial y un nivel final. Con eso, el script primero calcula en qué sección se encuentra la variable $inicial (mediante los else if primeros) y una vez hecho eso, llama a la función correspondiente (hay una por variable). Dentro, creo una variable auxiliar ($aux) y resto la cantidad de niveles totales que tiene la sección (definido al principio). Luego, guardo en $res (resultado) el cálculo de multiplicar los niveles a subir en esa sección ($aux * $nSecX, donde la variable $nSecX es el precio por nivel en esa sección de niveles). Tras eso, llama a la función finalizar(), y he aquí el problema:
La idea es que realice una operación similar a la que se hace con $inicial, pero además sumando el precio de cada paquete de niveles (es decir, del 10 al 20 es un paquete con un precio definido en la variable $pSecX) y he ahí mi problema; No sé cómo hacer que no cuente desde cero para encontrar la sección en la que está $final (ya que entonces suma precios de paquetes que no debería sumar), ya que debería de empezar a contar desde el número albergado en $inicial.
Perdón por el embrollo :P Espero que puedan ayudarme.
Un saludo, gracias de antemano.