- - PR -
MasterPageを使用したページでjavascriptのオブジェクトがnullになる
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-24 11:57
初めてMasterPageを使用した初心者です。
環境はWinXP VS2005 C# です。 以下の様な簡単なjavascriptでMasterPageなしのフォームでは正しく動作しますがMasterPage付きのフォームだと「document.form1.Text1はNullまたはオブジェクトではありません。」とVSから怒られてしまいます。 賢者のみなさま、宜しくお願いいたします。 【MasterPageありのコーディング】 <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="MyFormMasterPage.aspx.cs" Inherits="MyFormMasterPage" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">........... 【MasterPageなしのコーディング】 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyForm.aspx.cs" Inherits="MyForm" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body>............... 【スクリプト(MasterPageあり/なしとも同じコードです】 <script type="text/javascript" language="JavaScript"> function tokei() { dt=new Date(); h=dt.getHours(); m=dt.getMinutes(); s=dt.getSeconds(); document.form1.Text1.value="時刻"+h+":"+m+":"+s; } setInterval('tokei()',1000); </script> <input id="Text1" type="text" /> | ||||||||
|
投稿日時: 2009-02-24 12:15
まず表示されたページのソースの HTML を見て
document の form1 の中に Text1 という name のオブジェクトがあるか確認してみて下さい。 こういうのが無いと「document.form1.Text1」は認識出来ないです。
MasterPage の中ではコントロールの ID の頭に何か付加されたものが id や name として HTML に出力されたと思います。 | ||||||||
|
投稿日時: 2009-02-24 15:03
HTML になったときの form の ID が、MasterPage なしの場合と MasterPage ありの場合で異なることが直接の原因ですね。
# ASP.NET の TextBox ではないので、Text1 の ID は変わらない HTML になったときの form の ID は、Page クラスの Form.ClientID で取得できますので、
を
に直せばよさそうです。 | ||||||||
|
投稿日時: 2009-02-24 15:39
Kingさん、rainさんありがとうございます。
変換後htmlのソースコードなど今まで見たことが無かったので気がつきませんでした。 実行時、変換後のhtmlではaspxの「<form id="form1"」が「form name="aspnetForm" 」に変換されます。 初心者ならでの落とし穴にずっぽりはまりました。 MasterPageのこの仕様はMSDNには記述されているのかな?探してみます。 いつも思うのですが新しい機能を使うとき、出来ることはわかっているのにクラスなり メソッドなり等、逆引きで苦労します。 そういった面でここの会議室は本当にありがたいです。 あらためましてお礼申し上げます。 ありがとうございました。 PS もう一つ課題がありまして.... 真剣に調べてわからなかったら、またご質問させていただきます。 |
1