1

重複の可能性:
jQuery または `getElementByID` などの DOM メソッドが要素を見つけられないのはなぜですか?

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コード

そこにアラートを入れると表示されます

その行をブロック内の関数に入れて<head></head>、たとえばボタンの onClick イベントから呼び出すと、ファイル要素が非表示になるので、行は問題ありません。htmldocument.getLementByIDタグの外では無効なのでしょうか?それとも問題は、ページがまだ読み込まれていないため、その ID を持つ要素がないことでしょうか? この場合、どうすればよいですか?

解決

$int = 1; として PHP コードに変数を追加しました。(そして $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';
}
4

2 に答える 2

2

おっしゃるとおり、まだロードされていません。

特定の要素に影響を与える JavaScript は、延期する ( window.onload、イベント ハンドラーなど) か、変更しようとしている要素の後に配置する必要があります。

于 2013-01-02T20:35:15.770 に答える
2

ウィンドウのオンロードがこれを整理します。そのようです:

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

これは、サイト全体が読み込まthenれると、style.display コマンドが実行されることを意味します:)

于 2013-01-02T20:39:07.307 に答える