AttachEvent为0未定义

时间:2014-01-26 15:23:28

标签: javascript debugging attachevent

我想通过onchange-Event自动调整我网站的部分内容。但一如既往,我遇到了一个小问题需要解决。 控制台出现此错误:

The property undefined or a null reference can not be retrieved”。

function Resize() {
    var winHeight = window.innerHeight;
    var winWidth = window.innerWidth;
    var startElements = document.getElementsByClassName('start');
    for (var i = 1; i <= startElements.length; i++) {
        document.startElements[i].attachEvent('onchange', function StartResize() {
        startElements[i].style.paddingLeft = winWidth * 0.1;
        startElements[i].style.paddingRight = winWidth * 0.1;
        });
    };
};

<body onload="Resize">

最后的事情。我已经在body标签末尾的html文档中编写了脚本标记。

1 个答案:

答案 0 :(得分:1)

document删除document.startElements

您可能正在寻找Resize()。你忘了()来调用你的功能。

<body onload="Resize()">

但是,内联JS(比如你的html中的onload)从来都不是一个好习惯。查看以下部分结果: Why is inline JS bad?

相反,您应该使用以下JavaScript附加事件侦听器:

window.addEventListener('load', function() {
  //code here
});

除非您希望代码仅在IE5-8中使用,否则您需要使用addEventListener而不是attachEvent,因此应该addEventListener('change',

我也想知道你是否打算在1而不是0开始循环。第一个元素是项0。如果页面上只有一个项目,则跳过它并从不存在的项目开始。

所以,也试试:

for (var i = 0;