私はハングマンゲームを続け、コードを完成させました。未知のタイプのエラー(長さと値のプロパティ)
しかし、私は新しい2つのエラーました:あなたはiniciar
を呼び出すことはありませんよう
ahorcado.js:146 Uncaught TypeError: Cannot read property 'length' of undefined ahorcado.js:118 Uncaught TypeError: Cannot read property 'value' of undefined
var palabra = "Perro"
var hombre,l, espacio;
var Ahorcado = function (con) {
this.contexto = con;
this.maximo = 5;
this.intentos = 0;
this.vivo = true;
this.dibujar();
}
Ahorcado.prototype.dibujar = function() {
var dibujo = this.contexto;
dibujo.beginPath();
dibujo.moveTo(150,100);
dibujo.lineTo(150,50);
dibujo.lineTo(400,50);
dibujo.lineTo(400,350);
dibujo.lineWidth = 15;
dibujo.strokeStyle = '#000'
dibujo.stroke();
dibujo.closePath();
if (this.intentos > 0) {
dibujo.beginPath();
dibujo.arc(150, 140, 40, 0, Math.PI * 2, false);
dibujo.strokeStyle = '#f00'
dibujo.lineWidth = 5;
dibujo.stroke();
dibujo.closePath();
if (this.intentos > 1) {
dibujo.beginPath();
dibujo.moveTo(150,180);
dibujo.lineTo(150,250);
dibujo.strokeStyle = '#f00'
dibujo.lineWidth = 5;
dibujo.stroke();
dibujo.closePath();
if (this.intentos > 2) {
dibujo.beginPath();
dibujo.moveTo(120,220);
dibujo.lineTo(150,180);
dibujo.lineTo(180,220);
dibujo.strokeStyle = '#f00'
dibujo.lineWidth = 5;
dibujo.stroke();
dibujo.closePath();
if (this.intentos > 3) {
dibujo.beginPath();
dibujo.moveTo(120,290);
dibujo.lineTo(150,250);
dibujo.lineTo(180,290);
dibujo.strokeStyle = '#f00'
dibujo.lineWidth = 5;
dibujo.stroke();
dibujo.closePath();
if (this.intentos > 4) {
dibujo.beginPath();
dibujo.moveTo(125,120);
dibujo.lineTo(145,145);
dibujo.moveTo(145,120);
dibujo.lineTo(125,145);
dibujo.moveTo(155,120);
dibujo.lineTo(175,145);
dibujo.moveTo(175,120);
dibujo.lineTo(155,145);
dibujo.strokeStyle = 'blue';
dibujo.linewidth = 5;
dibujo.stroke();
dibujo.closePath();
}
}
}
}
}
}
Ahorcado.prototype.trazar = function() {
this.intentos++;
if (this.intentos >= this.maximo) {
this.vivo = false;
alert('Estas muerto')
}
this.dibujar();
}
function iniciar() {
var l = document.getElementById('letra');
var b = document.getElementById('boton');
var canvas = document.getElementById('c');
canvas.width = 500;
canvas.height = 400;
var contexto = canvas.getContext('2d');
hombre = new Ahorcado(contexto);
espacio = new Array(palabra.length);
b.addEventListener('click', agregarLetra)
mostrarPista(espacio);
}
function agregarLetra() {
var letra = l.value
var p;
mostrarPalabra(palabra, hombre, letra);
for(p in palabra){
if (letra == palabra[p]) {
espacio[p] = letra;
encontrado = true;
}
}
mostrarPista(espacio);
if (!encontrado) {
ahorcado.trazar
}
}
function mostrarPalabra(palabra, ahorcado, letra) {
var encontrado = false;
letra = letra.toUppercase();
}
function mostrarPista(palabra, espacio) {
var pista = document.getElementById('pista');
var texto = '';
var i = 0;
var largo = espacio.length;
for (i = 0; i < largo; i++) {
if (espacio[i] != undefined) {
texto = texto + espacio[i] + '';
}
else{
texto += '_ '
}
}
pista.innerText = texto;
}
エラーはかなりはっきりしています。初期化されておらず、読み込むオブジェクトを持たない変数からプロパティを読み込もうとしています。これをデバッグすると、どこが起こるのですか?どのオブジェクトが 'undefined'ですか? *あなたは*それらが定義されると期待していますか?スタックオーバーフローは、デバッガの代替ではありません。 @Davidに加えて – David
これが役に立つかもしれません: 'debugger'を置くと、http://stackoverflow.com/questions/66420/how-do-you-launch-the-javascript-debugger-in-google-chromeステートメント117行を開き、 'undefined'を探してみてください:https://developer.chrome.com/devtools/docs/javascript-debugging AND https://developer.mozilla.org/en-US/docs/ツール/デバッガー – jmunsch
すべての返信をありがとう、私はすべてのsuggetionsのおかげで、今、デバッグする方法を今、私は今、プロセスを学んでいる。 – Santiago