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

MDW*_*War 1 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";
};
Run Code Online (Sandbox Code Playgroud)

而且无论它给我的style是什么财产null.这段代码从以前的代码中被大规模拆除; 这是一个的一部分for本来应该用循环i为目标"img" + i,选择div用S idimg0- 9,然后我把它弄坏了下来,并试图手动瞄准每一个img0- 9用一个单独的线,它只是不断地刷新.是的,img0- 9div在HTML中.原始for循环看起来像这样:

for (i = 0; i < array.L; i++) {
    var tempButton = "img" + i;
    document.getElementById(tempButton).style.display = "none";
};
Run Code Online (Sandbox Code Playgroud)

为什么style属性null,我该如何解决?

Nie*_*sol 11

window.onload = displayMenu('main', 0);
Run Code Online (Sandbox Code Playgroud)

这是你的问题.请改用:

window.onload = function() {displayMenu('main', 0);}
Run Code Online (Sandbox Code Playgroud)

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

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