无法设置未定义的属性''

时间:2016-01-12 15:12:42

标签: javascript

我的javascript功能遇到了一些问题。

我正在尝试将属性设置为随机值。

    var spel = new Object();

    function start() {
         spel.antwoord = Math.floor((Math.random() * 10) + 1);
         spel.aantalKeer = 0;

         number.value = "";
         document.getElementById('check').innerHTML = "";
         document.getElementById('hintPos').innerHTML = "";
    }

但是,我收到了一个错误:Uncaught TypeError: Cannot set property 'antwoord' of undefined

有谁知道我为什么会收到这个错误?如果我提醒Math.floor我得到了一个预期的数字,为什么它未定义?

2 个答案:

答案 0 :(得分:4)

为了记录,这里是从小提琴中取出的实际代码:

(function() {
  document.getElementById('hint').disabled = true;

  start();
})();

var spel = new Object();
var number = document.getElementById('number');



function start() {

  alert(spel);
  spel.antwoord = Math.floor((Math.random() * 10) + 1);
  spel.aantalKeer = 0;

  number.value = "";
  document.getElementById('check').innerHTML = "";
  document.getElementById('hintPos').innerHTML = "";
}

start()函数在顶部调用,在立即执行的匿名函数内部。这就是为什么spelundefined

在评论中,您说您希望从窗口“加载”处理程序调用{​​{1}}。为此,您需要将该初始函数从IIFE更改为事件处理程序赋值:

start()

答案 1 :(得分:1)

这很简单:

var spel = {}; // initialize empty object
function start() {
     spel.antwoord = Math.floor((Math.random() * 10) + 1); // asign a new property
     spel.aantalKeer = 0;

     number.value = "";
     document.getElementById('check').innerHTML = "";
     document.getElementById('hintPos').innerHTML = "";
}