我的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
我得到了一个预期的数字,为什么它未定义?
答案 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()
函数在顶部调用,在立即执行的匿名函数内部。这就是为什么spel
是undefined
。
在评论中,您说您希望从窗口“加载”处理程序调用{{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 = "";
}