Foros del Web » Programando para Internet » Javascript »

Fucking IE, Ahorcado JS

Estas en el tema de Fucking IE, Ahorcado JS en el foro de Javascript en Foros del Web. Bueno me mandaron para la universidad hacer un ahorcado de proyecto para salvar la materia de javascript, y lo hize en mozilla funciono bn de ...
  #1 (permalink)  
Antiguo 28/05/2008, 11:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 1
Fucking IE, Ahorcado JS

Bueno me mandaron para la universidad hacer un ahorcado de proyecto para salvar la materia de javascript, y lo hize en mozilla funciono bn de bn, pero en IE jajja eh aqui el problema con el prompt, no funciona, me dice undefined y no reconoce nah, y me toy kemando la cabeza, dejo el codigo aver si me pueden ayudar hacer funcar el prompt en javascript

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title></title>
		<script type="text/javascript">

			var palabra;
			var letras_palabras = [];
			var letras_usadas = [];
			var errores = 0;
			var aciertos = 0;
			
			function cargar() {
				palabra = prompt("Insertar palabra: ");
				if (palabra.length <= 2 || palabra =="") {
					document.getElementById("principal").innerHTML = "Error debe ingresar una palabra con mas de dos caracter! <br><br> <a href='index.htm'> Intentar de nuevo </a>";
				} else {
					for (var i = 0; i <= palabra.length - 1; i++) {
						letras_palabras[i] = "_";
					}
					
					principal();			
				}
			}
			
			function principal() {
				if (letras_palabras.length != aciertos) {
					var salida = new String();
					for (var i = 0; i <= letras_palabras.length - 1; i++) {
						salida += letras_palabras[i] + " ";
					}
					document.getElementById("palabra").innerHTML = "Palabra: " + salida;
					error();
				} else {
					document.getElementById("principal").innerHTML = "Muy bien pasaste andubiste rico!";
				}
			}
			
			function error() {
				if (errores == 6) {
					document.getElementById("principal").innerHTML = "JAJAJAJA PERDISTE! La palabra era <b>" + palabra + "</b> <br><br> <img src='img/img7.jpg'> ";
				} else if (errores==5) {
					document.getElementById("errores").innerHTML = "<img src='img/img6.jpg'>";
				} else if (errores==4) {
					document.getElementById("errores").innerHTML = "<img src='img/img5.jpg'>";
				} else if (errores==3) {
					document.getElementById("errores").innerHTML = "<img src='img/img4.jpg'>";
				} else if (errores==2) {
					document.getElementById("errores").innerHTML = "<img src='img/img3.jpg'>";
				} else if (errores==1) {
					document.getElementById("errores").innerHTML = "<img src='img/img2.jpg'>";
				} else {
					document.getElementById("errores").innerHTML = "<img src='img/img1.jpg'>";
				}
			}
			
			function letrasusadas() {
				var salida = new String();
				
				for (var i=0; i <= letras_usadas.length - 1; i++){
					salida += letras_usadas[i] + " ";
				}
				
				document.getElementById("letras").innerHTML = "Letras Usadas: <b> " + salida + " </b>";
			}
			
			function cargarLetras() {
				var letra;
				var pasar;
				
				do {
					pasar = true;
					letra = prompt("Ingrese una letra: ");
					
					if (letra.length == 1) {
						for (var i = 0; i <= letras_usadas.length - 1; i++) {
							if (letras_usadas[i] == letra) {
								alert("Esta letra ya se ingreso reintente");
								pasar = false;
								
							}
						}
						
						if (pasar) {
							var posc = letras_usadas.length;
							letras_usadas[posc] = letra;
							comprobar(letra);
							pasar = true;
						}
					} else {
						alert("Se debe ingresar una sola letra");
						pasar  = false;
					}
				} while (!pasar);
				
			}
		
			function comprobar(letra) {
				var error = true;
				
				for (var i=0; i<=palabra.length - 1; i++) {
					if (palabra[i]==letra) {
						letras_palabras[i] = letra;
						aciertos++;
						error = false;
					}
				}
				
				if (error) {
					errores++;
				}
				
				letrasusadas();
				principal();
			}
		</script>
	</head>
	<body onload="cargar()">
		<div id="principal">
			<div id="palabra"> </div> <br>
			<div id="errores"> </div> <br>
			<div id="letras"> </div> <br><br>
			
			<input type="submit" value="Poner Letra" onclick="cargarLetras()">
		</div>
	</body>
</html>
  #2 (permalink)  
Antiguo 28/05/2008, 11:49
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Respuesta: Fucking IE, Ahorcado JS

jeje qué bueno

pues mira, parece que IE busca escribir el segundo parámetro disponible para el método prompt() que es para mostrar una respuesta por defecto y al no encontrar nada devuelve (y muestra) el undefined.

Agrégale ese segundo parámetro como una cadena vacía y listos

letra = prompt("Ingrese una letra: ",'');
  #3 (permalink)  
Antiguo 28/05/2008, 12:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Fucking IE, Ahorcado JS

listo solucionado, pero ahora tengo otro problema, ponele ingreso la palabra

"berna"

y despues pongo ingresar letra, y pongo la "b", y me lo muestra como error, que no se encuentra la letra b en la palabra, alguien tiene idea :(
  #4 (permalink)  
Antiguo 28/05/2008, 12:02
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Respuesta: Fucking IE, Ahorcado JS

ejem ... vale, ya veo que lo del undefined iba aún más allá

Mira, el problema te viene de aquí

En la función comprobar() tienes esta condición

Código:
if (palabra[i]==letra)
FF parece que entiende que le estás pidiendo un caracter en determinada posición dentro de una cadena pero IE entiende, por la sintaxis que usas, que buscas un elemento dentro de un array y por eso te devuelve undefined.

Usa mejor el método para encontrar un caracter por su posición dentro de una cadena que es charAt(posición)

if (palabra.charAt(i)==letra)
__________________
Javascript Códigos - Bambú difunde
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 01:44.