document.getElementById()不起作用 - 可能是因为页面尚未加载?

时间:2013-01-02 20:32:10

标签: javascript

  

可能重复:
  Why does jQuery or a DOM method such as `getElementByID` not find the element?

在HTML标记之前,我运行了一些PHP代码。在此期间,我需要包含一些javascript行,如

..php code...
..javascript code...
..php code..
<html>
<head>
</head>
<body>
<input type="file" name="file" id="file">
</body>
</html>

在javascript代码中我想隐藏文件元素。

这没有做任何事情:

..php code
?>
<SCRIPT LANGUAGE="JavaScript">
 document.getElementById('file').style.display = 'none';
</script>
<?php

... php code

如果我在那里发出提醒,则显示

如果我将该行放入<head></head>块中的函数并从中调用它按钮的onClick事件,文件元素变为隐藏,因此该行很好。也许document.getLementByID在html标记之外无效?或者问题可能是页面尚未加载,所以没有带有该ID的元素?如果是这种情况,我该怎么办?

我在php代码中添加了一个变量$ int = 1; (和$ int = 0;在其他地方,但仍然在页面加载之前)。 然后在<head></head>块中:

window.onload = selectChoose;
function selectChoose() 
{
    if (<?php echo $int ?> == 0) {
        showChoose();
    }
    else {
        hideChoose();
    }
}

function showChoose() 
{
    document.getElementById('file').style.display = 'inline';
}

function hideChoose() 
{
    document.getElementById('file').style.display = 'none';
}

2 个答案:

答案 0 :(得分:2)

正如你所说,它还没有加载。

影响特定元素的JavaScript必须延迟(window.onload,在事件处理程序上等),或者在之后放置它试图修改的元素。

答案 1 :(得分:2)

Window onload将为您排序。像这样:

window.onload = function(){
     document.getElementById('file').style.display = 'none';
    }

这意味着一旦整个网站加载then,它将执行style.display命令:)