Foros del Web » Programando para Internet » Javascript »

Lista con textarea; máquina de escribir y cálculos.

Estas en el tema de Lista con textarea; máquina de escribir y cálculos. en el foro de Javascript en Foros del Web. Hola, me estreno en el foro con una duda sobre como adornar un poco una lista que muestra sus resultados en un textarea. Por otro ...
  #1 (permalink)  
Antiguo 09/07/2011, 10:19
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta Lista con textarea; máquina de escribir y cálculos.

Hola, me estreno en el foro con una duda sobre como adornar un poco una lista que muestra sus resultados en un textarea. Por otro lado, ya que pedir es gratis, también me gustaría rehacer el formulario de tal modo que escribiendo unos datos numéricos concretos obtuviera los resultados en otro campo, me explico.

Este es el codigo que tengo elaborado a base de copy&paste. Lo he adaptado un poco; tengo algunas nociones de html pero prácticamente ni idea de javascript:

Head:

Código:
<script language="JavaScript">

window.onload = function() {
selectelem = document.getElementById("lista");
textareaelem = document.getElementById("info");
textareaelem.innerHTML = selectelem.value;
selectelem.onchange = function() {
textareaelem.innerHTML = this.value;
}
}

</script>
Body:

Código:
<form>
<select id="lista" size="1" style="width: 370; color: #00ff00; background-color: #000000; font-size: 100%; font-family: Arial black">
<option value="1.000 ratones salvados en modo normal. Ningún privilegio." CHECKED>1.- Peón</option>
<option value="1.300 ratones salvados en modo normal, o 200 en modo dificil, o haber llegado 75 veces el primero. Puede reclutar.">2.- Cocinero</option>
<option value="1.700 ratones salvados en modo normal, o 500 en modo dificil, o haber llegado 100 veces el primero. Puede reclutar.">3.- Soldado</option>
<option value="2.200 ratones salvados en modo normal, o 900 en modo dificil, o haber llegado 150 veces el primero. Puede reclutar.">4.- Tesorero</option>
<option value="2.800 ratones salvados en modo normal, o 1.400 en modo dificil, o haber llegado 225 veces el primero. Puede reclutar.">5.- Reclutador</option>
<option value="3.500 ratones salvados en modo normal, o 2.000 en modo dificil, o haber llegado 325 veces el primero. Puede reclutar.">6.- Cazador</option>
<option value="4.300 ratones salvados en modo normal, o 2.700 en modo dificil, o haber llegado 450 veces el primero. Puede reclutar.">7.- Iniciado</option>
<option value="5.200 ratones salvados en modo normal, o 3.500 en modo dificil, o haber llegado 600 veces el primero. Puede reclutar y cambiar la descripción.">8.- Aprendiz de Chamán</option>
<option value="10.000 ratones salvados en modo normal, u 8.000 en modo dificil, o haber llegado 1.000 veces el primero. Puede reclutar y cambiar la descripción.">9.- Chamán de la Tribu</option>
<option value="Solo el fundador de la tribu puede poseer este rango, y tiene pleno control.">10.- Jefe Espiritual</option>
</select><font face="Courier"><b> <--- Lista desplegable</b></font><br>

<textarea id="info" cols="75" rows="2" style="width: 600; color: #ffffff; background-color: #000000; font-weight: bold; font-size: 90%; font-family: Verdana; text-align: justify" readonly="readonly"></textarea>
</form>
El ejemplo resultante es este: http://www.mipaginapersonal.movistar.es/web3/thunderwolf/ejemplo.htm

Lo que pretendo es añadir a ese mismo codigo, si es posible, el efecto de máquina de escribir a los resultados del textarea.

Por otro parte, y he aquí lo complicado, me gustaría crear otro tipo de formulario desde cero de tal modo que el visitante escribiera sus propios datos y la aplicación le devolviera en primer lugar su rango en base a los mismos, y cuanto le faltaría para alcanzar los siguientes. Algo como esto:

-------------------------------------------

Ratones salvados en modo normal: [ Campo de texto para introducir datos ]

Ratones salvados en modo dificil: [ Campo de texto para introducir datos ]

Veces que has llegado el primero: [ Campo de texto para introducir datos ]

Tu rango actual es: [ Campo de texto con resultado ]

-------------------------------------------------------------

¿Que rango quieres alcanzar? [ Lista de opciones ] [ Privilegios de la opcion ]

Para el rango seleccionado te falta lo siguiente:

Ratones salvados en modo normal [ Campo de texto con resultado ] , o bien

Ratones salvados en modo difícil [ Campo de texto con resultado ] , o bien

Haber llegado el primero [ Campo de texto con resultado ] veces.

---------------------------------------------------------------

En la primera parte del formulario, tendrían que mostrarse los resultados a tiempo real, sin botones. No son necesarios los tres datos simultáneamente, si no que basta solo uno de ellos para calcular un rango preliminar. Si el visitante añadiera el segundo o tercer dato, y estos últimos equivalieran a un rango mayor, cambiaría el resultado pero no por ello estaría obligado a rellenar los tres campos, no se si me he explicado con claridad.

Los textos y como estén colocados es lo de menos, eso ya podría adaptarlo yo sin problemas. Lo que necesito es la ecuación del javascript en si, y un boceto de formulario para saber como ubicarlo.

Si fuera complicado de hacer o resultara sencillamente imposible, me bastaría solo con el efecto de maquina de escribir en el código que ya tengo hecho.

Gracias de antemano por vuestra ayuda; no la solicitaría si pudiera hacerlo por mis propios medios. A pesar de haber encontrado decenas de ejemplos de código de maquina de escribir en textarea, no se de que manera podría fusionarlo con la lista que tengo elaborada. Y sobre la otra (extensa) petición, es evidente que no hay ejemplo alguno que se adapte a mis necesidades. Sin saber programación en javascript, esta es mi última alternativa.

Saludos

Última edición por ThunderWolf; 09/07/2011 a las 10:27
  #2 (permalink)  
Antiguo 11/07/2011, 07:02
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Lista con textarea; máquina de escribir y cálculos.

Mucho me temo que voy a tener que hacer un curso de Javascript para resolver estas cuestiones, pedir ayuda es tan inutil como buscar la respuesta en google.

Si alguna vez descubro como hacerlo, ¡registrare la patente y ganare millones!
  #3 (permalink)  
Antiguo 14/07/2011, 14:21
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Respuesta: Lista con textarea; máquina de escribir y cálculos.

Hola thunderwolf,

Aquí te dejo un código que te servirá de ejemplo para continuar trabajando sobre él... y te recomiendo que intentes ser más concreto en las preguntas que realices e intenta abrir un post para cada problema... que la ayuda que puede prestar cada uno es voluntaria (y a veces no se puede disponer del tiempo para responder).

Un saludo.

Código:
<html>

	<head>

		<title>Ejemplo</title>

		<script type="text/JavaScript">

			function comprobar() 
			{

				var valor = document.getElementById("txtEntrada").value;

				// Valores de cada nivel
				// Ten en cuento que los elementos de un array comienzan desde cero
				var rangos = [ 1000, 1300, 1700, 2200, 2800, 3500, 4300, 5200, 10000 ];				
				
				// Inicializamos con el nivel mínimo (1 = PEON)
				var nivel = 0;		

				// Recorremos el array
				for( var contador=0; contador <= 8; contador++ )
				{
					// Si el valor introducido es MAYOR O al límite de puntos máximo del nivel que estamos comprobando
					if( valor <= rangos[contador] )
					{
						nivel = contador;
						break;
					}
				}

				// Si el valor es mayor del máximo, se devuelve el nivel máximo permitido
				if( valor > 10000 )
					nivel = 8;

				alert("Nivel: " + nivel);

				// Seleccionar en la lista
				document.getElementById("lista2").selectedIndex = nivel;

			}

		</script>

    </head>


	<body>

		<form name="form1" method="post" action="#" >

			<label for="txt1">Escribe un valor</label>
			<input type="text" id="txtEntrada" name="txtEntrada" />

			<label for="lista2">Selecciona:</label>
			<select id="lista2" size="1" style="width: 370; color: #00ff00; background-color: #000000; font-size: 100%; font-family: Arial black">
				<option value="1">Peón</option>
				<option value="2">Cocinero</option>
				<option value="3">Soldado</option>
				<option value="4">Tesorero</option>
				<option value="5">Reclutador</option>
				<option value="6">Cazador</option>
				<option value="7">Iniciado</option>
				<option value="8">Aprendiz de Chamán</option>
				<option value="9">Chamán de la Tribu</option>
				<option value="10">Jefe Espiritual</option>
			</select>

			<input type="button" id="btnComprobar" name="btnComprobar" value="Comprobar" onclick="comprobar();" />

		</form>

	</body>
  #4 (permalink)  
Antiguo 15/07/2011, 07:23
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Lista con textarea; máquina de escribir y cálculos.

Gracias por el aporte MikiBroki.

Sé que nadie esta obligado a ofrecer su ayuda ni invertir su tiempo a menos que quiera, pero es desesperante tener una idea clara sobre un proyecto y no poder desarrollarlo por falta de medios. Lamento que mi frustración haya provocado que la solicitud derive en algo más parecido a una exigencia.

Confió en poder desarrollar el resto del script, ya que los campos restantes se basan en el mismo tipo de calculo. Sigue resultándome complicado entender la estructura pero puedo descifrar la ecuación.

A ver que me sale
  #5 (permalink)  
Antiguo 15/07/2011, 07:30
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Respuesta: Lista con textarea; máquina de escribir y cálculos.

No te agobies, ninguno hemos nacido enseñados y todos hemos comenzado aprendiendo desde cero (con más o menos facilidad y ayuda), y necesitado también que nos echen una mano y orienten.

Mi consejo es que si quieres aprender bien, hagas los cursos que necesitas y puedas, aprender los conceptos de programación conlleva mucho tiempo si se hace sólo, ya que uno se suele perder entre tanta información.

Un saludo, paciencia y ánimo !
  #6 (permalink)  
Antiguo 15/07/2011, 14:30
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Lista con textarea; máquina de escribir y cálculos.

He tratado de adaptar el código que me has facilitado, sustituyendo variables numéricas por variables de elementos (los rangos). Cuando estaba basado en cifras funcionaba perfectamente, pero o bien he cometido un error grave de sintaxis, o he omitido algo fundamental, o sigo sin comprender bien la estructura:

Código:
function comprobar() 
{
var valor = document.getElementById("csaves").value;

// He establecido que la variable "valor" es el número que he introducido en el campo del formulario "csaves" 

var nivel = [ Peón, Cocinero, Soldado, Tesorero, Reclutador, Cazador, Iniciado, Aprendiz de Chamán, Chamán de la Tribu ];

// He enumerado las variables de elementos, los rangos.

if ( valor <= 1000 )
	nivel = Peón; 
if ( valor >= 1300 )
	nivel = Cocinero;
if ( valor >= 1700 )
	nivel = Soldado;
if ( valor >= 2200 )
	nivel = Tesorero;
if ( valor >= 2800 )
	nivel = Reclutador;
if ( valor >= 3500 )
	nivel = Cazador;
if ( valor >= 4300 )
	nivel = Iniciado;
if ( valor >= 5200 )
	nivel = Aprendiz de Chamán;
if ( valor >= 10000 )
	nivel = Chamán de la Tribu;
}

// He introducido los operandos y condiciones para ambas variables.

alert("Rango: " nivel );

document.getElementById("lista2").selectedIndex = nivel;

// Las ordenes para el formulario.

}
No solo no se ejecuta la función, ademas invalida el resto del script. ¿Que es lo que no he entendido?
  #7 (permalink)  
Antiguo 15/07/2011, 15:26
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Respuesta: Lista con textarea; máquina de escribir y cálculos.

Los textos se ponen entre comillas:

Código:
var nivel = [ "Peon", "Cocinero", "Soldado", "Tesorero", "Reclutador", "Cazador", "Iniciado", "Aprendiz de Chaman", "Chaman de la Tribu" ];
En el switch deberás ponerlas también cuando asignas el valor a una variable:

Código:
nivel = "Cocinero";
En el 'alert()' te falta el operador de concatenación:

Código:
alert("Rango: " + nivel );
Ten en cuenta que también deberás comprobar otras cosas, como si por ejemplo esperas que el usuario introduzca un número y pone algún carácter no válido o escribe texto...

Por último te recomendaría que comenzases aprendiendo con cosas más sencillas para conocer mejor el lenguaje y los fundamentos de programación. No te desanimes, no es difícil, pero como todo lleva su tiempo.

Si se me permite, te recomiendo los cursos de Teoría de la programación y JavaScript en la web de mi firma (encontrarás muchos otros por la red).

Salu2
  #8 (permalink)  
Antiguo 15/07/2011, 20:24
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Lista con textarea; máquina de escribir y cálculos.

Gracias de nuevo, estaba casi seguro de que era un problema de sintaxis. Ademas he visto que me faltaba un { antes de enumerar las variables tras establecer la función.

Ya he conseguido que se ejecute, aunque me faltan condicionantes como has mencionado (por ejempo, al no haber indicado que sucede por debajo de 1300, el alert me suelta todas las "var nivel" posibles de golpe)

Ahora entiendo mucho mejor como funciona, creo que con esto y algo más de estudio debería poder sacar el resto... no será ninguna proeza de la aritmética pero cumplirá su cometido.
Te estoy muy agradecido por ponerme en vereda

http://www.mipaginapersonal.movistar.es/web3/thunderwolf/ejemplo_tercero.htm

Última edición por ThunderWolf; 16/07/2011 a las 04:03

Etiquetas: formulariosespecificos, lista, textarea, calculo
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 17:28.