この問題に関連する他のすべての質問/解決策を見てきましたが、解決策を見つけることができませんでした。document.getElementById()は、外部JSファイルから呼び出されたときにNULLを返します
ボタン付きの基本的なaspxページがあります。 OnClickはJS関数を呼び出します。 Javascript関数は、動作するdocument.getElementById()を呼び出します。次に、外部のJAファイルに存在するサブ関数を呼び出し、同じ呼び出しが失敗します。どうして?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jstest.aspx.cs" Inherits="jstest" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBox runat="server" ID="RunAtStartup" OnClick="function1();" text="Click Me" />
</div>
</form>
<script>
function function1()
{
if (document.getElementById("<%= RunAtStartup.ClientID %>") == null)
alert('function1 null');
else
alert('function1 not null');
function2();
}
</script>
<script src="./function2.js"></script>
</body>
</html>
そして、外部のJavaScriptファイルfunction2.jsが
function function2() {
if (document.getElementById("<%= RunAtStartup.ClientID %>") == null)
alert('function2 null');
else
alert('function2 not null');
}
あるボタンをクリックした結果は、それはfunction1が 'nullでない' で表示され、関数2は、 'NULL' です。
私はパラメータとしてドキュメントを渡そうとしましたが、うまくいきませんでした。私はfunction2()。bind(document)をやろうとしましたが、うまくいきませんでした。私は、javascriptデバッガを踏んで、function1のドキュメントオブジェクトがfunction2のドキュメントオブジェクトと同じであるように見えます。私が言うことができるものから、事前 で
おかげでマイケル
は、jsファイルの名前です。function2.js ?? –
以下の答えを見てください。 '.js'ファイルにサーバサイドコード' <%= ...%> 'を混在させています。 – EdSF