`style`属性在元素上是`null`

时间:2012-07-08 01:12:18

标签: javascript

我有这段代码:

function displayMenu (newGal, newSub) {
    curGal = newGal;
    curSub = newSub;
    if (curGal == null) {
        curGal = "main";
    };
    arrayL = curGal.length;
    if (curImg == null) {
        curImg = 0;
    };
    if (curSub == null) {
        curSub = 0;
    };
    prevImg = curImg - 1;
    if (prevImg == null || prevImg < 0) {
        prevImg = arrayL;
    };
    nextImg = curImg + 1;
    document.getElementById('img1').style.display = "none";
};

无论它给我的是style属性是null。这段代码从以前的代码中被大规模拆除;这是for循环的一部分,该循环应该使用i定位"img" + i来选择div id img0 9 - img0,然后我将其分解并尝试使用单独的行手动定位每个9 - img0并且它只是一直打破。是的,9 - for div位于HTML中。原始的for (i = 0; i < array.L; i++) { var tempButton = "img" + i; document.getElementById(tempButton).style.display = "none"; }; 循环看起来像这样:

style

为什么null属性{{1}},我该如何解决?

2 个答案:

答案 0 :(得分:11)

window.onload = displayMenu('main', 0);

这是你的问题。请改用:

window.onload = function() {displayMenu('main', 0);}

在您的代码中,调用displayMenu,然后将该调用的返回值分配给window.onload。这会失败,因为您在添加window.onload元素之前分配imgX

在解决方案中,您将函数文本分配给window.onload,在调用时,它运行displayMenu。它现在有效,因为元素已放在页面上。

答案 1 :(得分:1)

在你的jsFiddle中,你定义了两次函数displayMenu(),这会破坏它。