2014-11-12 2 views
0

Хорошо, поэтому я немного озадачен этим, сначала я покажу вам код, а затем объясню.Для цикла Поиск ID's Javascript

var number = 1; 
var maxguess = 6; 
/*make the array of possible words*/ 
var arr = ["horse", "cow", "blueberry", "apples", "time", "hollow", "pumpkin", "telephone", "computer", "calculator", "tower", "castle"]; 
/*write shuffler code*/ 
function shuffle(array) { 
    var currentIndex = array.length, temporaryValue, randomIndex ; 
    // While there remain elements to shuffle... 
    while (0 !== currentIndex) { 
     // Pick a remaining element... 
     randomIndex = Math.floor(Math.random() * currentIndex); 
     currentIndex -= 1; 
     // And swap it with the current element. 
     temporaryValue = array[currentIndex]; 
     array[currentIndex] = array[randomIndex]; 
     array[randomIndex] = temporaryValue; 
    } 
    return array; 
} 
/*shuffle the array*/ 
shuffle(arr); 
/*make the storage array for user entry*/ 
var gstore = []; 
/*get the first entry in the array, make it a string, and remove any commas*/ 
var teme = arr.slice(0, 1).toString().replace(/,/g,''); 

console.log(teme); 

for (var i = 0; i <= 9; i++) { 
    if (i > teme.length){ 
    document.getElementById(i).innerHTML="x"; 
    } 
} 

/*listen for button click*/ 
document.getElementById('sendIt').addEventListener('click', process); 
/*function for 'process'*/ 
function process() { 
    /*get the guess from the user*/ 
    var guess = document.getElementById('guess').value.toString().toLowerCase(); 
    /*check for any index of this guess*/ 
     if (gstore.indexOf(guess, 0) == -1){ 
      /*store this guess*/ 
      gstore.push(guess); 
      /*make storage array for letter indicies*/ 
      var indices = []; 
      /*find indicies of the guess*/ 
       for(var i=0; i<teme.length;i++) { 
        if (teme[i] === guess) { 
         document.getElementById(i).innerHTML = guess.toString(); 
        } 
       } 
      number++; 
     } 
    if (gstore.indexOf(guess, 0) != -1){ 

    } 
} 

Хорошо, так что это палач-игра, которую я делаю в классе. В нижней части JS вы можете видеть, что я написал following-

в
for(var i=0; i<teme.length;i++) { 
        if (teme[i] === guess) { 
         document.getElementById(i).innerHTML = guess.toString(); 
        } 
       } 

Теперь это не дает мне абсолютно никаких ошибок в консоли JS если оставить как есть. Теперь, я получаю сообщение об ошибке, когда на линии говоря

document.getElementById(i).innerHTML=""; 

, когда я его вне функции кнопки мыши здесь

console.log(teme); 

for (var i = 0; i <= 9; i++) { 
    if (i > teme.length){ 
    document.getElementById(i).innerHTML=""; 
    } 
} 

Чтобы быть конкретным, то состояние ошибки

[Error] TypeError: null is not an object (evaluating 'document.getElementById(i).innerHTML=" "') 
    global code (clar.js, line 31) 

сейчас если здесь возникает ошибка, стоит ли менять код в этом месте или я делаю что-то нехорошее в обоих случаях, даже если работает второй экземпляр?

Вся помощь очень ценится, и мой Javascript учитель не имеет ни малейшего представления, вы можете ввести переменную при написании

document.getElementById(variableName) 

так что он буквально не поможет мне, и также я нахожу это хорошо, чтобы быть в состоянии чтобы сделать что-то без рамки

редактирования: извините, забыл HTML, которые должны помочь очистить воздух, как к тому, что я делаю

<html> 
<head> 
</head> 
<body> 
    <input type="text" name="" value="" id="guess" /><br> 
    <input type="button" name="" value="submit" id="sendIt" /><br /> 
    <script src="./clar.js" type="text/javascript"></script> 
    <span id="0"></span><span id="1"></span><span id="2"></span><span id="3"></span><span id="4"></span><span id="5"></span><span id="6"></span><span id="7"></span><span id="8"></span><span id="9"></span> 
</body> 
</html> 
+0

У вас не должно быть более одного элемента с тем же идентификатором на странице. Идентификаторы должны быть уникальными. Я бы вместо этого дал элементам определенный класс, а затем использовал 'querySelector' –

+2

Ошибка означает, что вы пытаетесь найти элемент с идентификатором, который не существует. Не знаете, что вы ожидаете от нас? –

+0

Можете ли вы дать нам свой HTML-код? – shadowfox

ответ

0

Ваш второй цикл является получение доступа к элемент за пределами, а индексщик возвращает нулевой объект.

Изменение от:

for (var i = 0; i <= teme.length; i++) 

к:

for (var i = 0; i < teme.length; i++) 
+0

Собственно, использование дальше вниз код работает нормально, первый из них вызывает ошибку –

+0

@ is-cj: Итак, это точно так же, как вы объяснили в вопросе? –

+0

Я добавил свой html @FelixKling, поэтому должно быть проще понять, что я делаю сейчас, извините за это –

0

Ваш код ошибки будет поступать из JavaScript не нашли HTML элемент в документе.

document.getElementById(i).innerHTML = guess.toString(); 

У вас есть элементы в вашем html-формате с идентификаторами от 0 до teme.length?

Это может помочь, если вы добавите свой html тоже!

+0

Я только что разместил html, который я использую, поэтому извините, чтобы сделать вещи более запутанными –

Смежные вопросы