- PR -

オブジェクトのプロパティ変更に伴うjavascriptでの反映処理

投稿者投稿内容
さわでぃー
会議室デビュー日: 2004/02/19
投稿数: 5
投稿日時: 2004-03-03 01:51
開発環境は、C#, ASP.NET, javascript です。
Webフォームにボタンとラベルを配置し、Page_Loadイベントでラベルの
テキストプロパティを変更します。その後、ボタンのアトリベートで、
ボタンのOnClickイベントをキャッチし、javascriptでの処理を実行させます。
その時、変更した値がjavascriptでは反映されておりません。
この場合、どうすれば、値を引き渡すのでしょうか?

初心者ならではの質問で申し訳ありませんが、お願い致します。
また、同じようなことが既に質問されていましたら申し訳ありません。
検索しましたが、当該に近い書き込みを見つけることができませんでした。
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2004-03-03 08:54
さわでぃーさんこんにちは。

>ボタンのOnClickイベントをキャッチし、javascriptでの処理を実行させます。
>その時、変更した値がjavascriptでは反映されておりません。
>この場合、どうすれば、値を引き渡すのでしょうか?

今はどうやって渡しているのですか?ボタンに書かれた、例えば「送信」
という文字列をどのように取得しているのでしょうか?
裏で変数に値を持たせておけばいいのではないでしょうか?
さわでぃー
会議室デビュー日: 2004/02/19
投稿数: 5
投稿日時: 2004-03-03 09:28
具体的には次のとおりです。
Webフォームのラベル、ボタンを使用しています。
C#(クラス)側
private void Page_Load(object sender, System.EventArgs e)
{
label1.Text=送信;
button1.Attributes["OnClick"]="return btnMosikomu_OnClick();";
}

ASP側
<script language="javascript" id="clientEventHandlersJS">
<!--
function btnMosikomu_OnClick() {
confirm(label1.text)
}

"undefined"とメッセージが返ります。
"送信"という文字列を受け取るには、どうすればよいのでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-03 09:39
label1にtextというメンバがないと思うんですけど。
Javascriptでコントロールの値を設定したり取得したりはvalueじゃなかったでしたっけ?

VB.NET(サーバー側)のコードとJavascript(クライアント側)のコードを混同していませんか?
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2004-03-03 09:48
labelはspanタグになっているので
document.all.label1.innerHTML;
という感じで取得するようにしてください。

今回だと
confirm(document.all.label1.innerHTML);
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-03 09:53
引用:

きちさんの書き込み (2004-03-03 09:48) より:
labelはspanタグになっているので
document.all.label1.innerHTML;
という感じで取得するようにしてください。



あ、そうだった。
Labelはコントロールになるわけじゃなかったですね。

適当なこと書いちゃいました。
さわでぃー
会議室デビュー日: 2004/02/19
投稿数: 5
投稿日時: 2004-03-03 10:29
お返事、ありがとうございます。
早速、実行させていただきましたら見事に値を取得することができました。

しかし、ラベルが非表示となった場合(VisibleプロパティがFalse)、
値を取得することができません。

ラベルが非表示の場合にも値を取得できるようにならないものでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-03 10:45
 “サーバで”「ラベルが非表示」というのが、“クライアントで”「どのような状態」であると思われますか?

 Webアプリを作成しているときに、「おかしいな?」と思ったら、クライアント側の実体(HTML)がどのようになっているか、ページを右クリックして「ソースを表示」し、確認するようにしてください。



*****ここから答え

 サーバプロパティでVisible=Falseとすると、クライアントには“出力されません”。よってクライアントには“オブジェクトがありません”。存在しないオブジェクトからプロパティを取ることはできないのです。

 valueを空文字列にして「疑似非表示」し、カスタム属性を追加することでjavascript上ではプロパティを追加して、対応できると思います。

スキルアップ/キャリアアップ(JOB@IT)