2014-12-12 5 views
-1

Я новичок в использовании объектов Javascript и не могу объяснить, почему это не работает, несмотря на все мои усилия. Любая помощь приветствуется. Я размещаю весь файл, потому что он очень мал. Еще раз спасибо.Проблема с объектами JavaScript

<h1 id="mainHeading"> 
     Testing Objects in Javascript 
    </h1> 
</head> 
<body> 
    <input id="inputBox" type="number"> 
    <div id="response"> 

    </div> 
    <script type="text/javascript"> 
     var input = document.getElementById('inputBox'); 
     var mainObj = { 
      keys: [], 
      numCheck: function() { 
       if(input.value >= 0 && input.value < 100) { 
        response.innerHTML = "Avg"; 
       } 
      }, 

      tracksKey: function (e) { 
       code = e.keyCode; 
       keys[code] = (e.type === "keydown"); 
       checksKey(); 
      }, 

      checksKey: function() { 
       if (keys[13]) { 
        mainObj.numCheck(); 
       } 
      }, 
     } 

     window.addEventListener("keydown", mainObj.tracksKey); 
     window.addEventListener("keyup", mainObj.tracksKey) 
    </script> 
</body> 

+0

Запишите, что вы пытаетесь достичь с помощью объекта. Очевидно, что вы хотите получить доступ к свойству под названием 'keys'. Итак, поскольку это свойство вашего 'mainObj' [литерала объекта] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Object_literals), вы можете он использует 'mainObj.keys' вместо« ключей ». Если вы задаетесь вопросом, где ['this'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) в' trackKey' указывает на время выполнения: это 'окно 'а не' mainObj'. –

ответ

0

keys и checksKey не являются глобальными, то есть префикс их с объектом, которому они принадлежат. Переменная response не определена.

var response = document.getElementById('response'); 


tracksKey: function (e) { 
    var code = e.keyCode; 
    mainObj.keys[code] = (e.type === "keydown"); 
    mainObj.checksKey(); 
}, 
checksKey: function() { 
    if (mainObj.keys[13]) { 
    mainObj.numCheck(); 
    } 
} 
+0

Спасибо, я подумал, что это было просто, что было бы легко исправить. Поэтому я предполагаю, что мне придется добавить 'mainObj.whatever' для любой переменной, находящейся внутри этого объекта? – Ryan

+0

Да, это правильно – Igor

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