長年の読者、初めてのポスター!
Div オブジェクトを配列に追加しようとしていて、後で loadViews 関数を呼び出すときにそれらにアクセスしようとしています。すべてのアラートは適切な順序で発生しますが、配列 m_Divs の長さは常に 0 です。
そうしないと、javascriptを呼び出そうとすると、各page_loadの後に「エラー:オブジェクトが必要です」がスローされるため、Page_Loadで毎回スクリプトを再登録しています。
.JS ファイル。
var m_Divs = new Array();
function switchViews(obj) {
alert("switchViews!");
var div = document.getElementById(obj);
var img = document.getElementById('img' + obj);
if (div.style.display == "none") {
alert("adding div" + div);
window.m_Divs.push(div);
alert("added");
}
else {}
}
function loadViews() {
alert(window.m_Divs.length);
for (i = 0; i < window.m_Divs.length; i++) {
window.m_Divs[i].style.display="";
}
}
ビューの切り替えは次の方法でトリガーされます
<a href="javascript:switchViews('div<%#Eval("ID")%>');">
GridView 内。
.CS ファイル
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude("TheScript", "Scripts/TheScript.js");
if (!Page.IsPostBack)
{
// Stuff.
}
}
関連する .aspx ファイル コード
<script type="text/javascript" src="Merge.js"></script>
<body onload = "loadViews()">
<form id="form1" runat="server">