可能重复:
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';
}
答案 0 :(得分:2)
正如你所说,它还没有加载。
影响特定元素的JavaScript必须延迟(window.onload
,在事件处理程序上等),或者在之后放置它试图修改的元素。
答案 1 :(得分:2)
Window onload将为您排序。像这样:
window.onload = function(){
document.getElementById('file').style.display = 'none';
}
这意味着一旦整个网站加载then
,它将执行style.display命令:)