- PR -

子画面から親画面のラベルに値を代入する方法

投稿者投稿内容
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-01-26 13:24
こんにちは。

えと私の環境はVS2003でIE6ですが
window.opener.document.Label1.innerText='あいうえお';
はNGで
window.opener.Label1.innerText='あいうえお';
は正しく動きましたよ(^0^;)
きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-01-26 13:41
しょくぱんさんのおっしゃる様に"document"の部分を抜いたら
子画面の値が親画面のラベルにも編集されました。

みなさん、本当にありがとうございました。
またわからないことがありましたらよろしくお願いいたします。
(自分でも精進します。)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-26 14:31
解決しているようですが、一言だけ言いたいことがあります。

引用:

きよよさんの書き込み (2007-01-26 12:54) より:

スクリプトエラーを表示したところ、

window.opener.document.form1.lblaは
Nullまたはオブジェクトではありません。

というエラーでした。


ここは予想通りでしたが、

引用:

やはりInnerTextの使い方が間違っているのでしょうか?


なぜこういう推測になるのでしょうか... (私の誘導失敗)
innerText は関係ないです。

> window.opener.document.form1.lbla は、Null またはオブジェクトではありません。

と言われています。
lbla が undefined または null でないかを確認するのが先です。

# SetFocus について というスレッドを思い出しました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-01-26 14:56
じゃんぬねっとさん、ご指摘ありがとうございます。

# SetFocus について、を読ませて頂きました。

私の書き込みについてですが、確かにエラー内容と
私の推測は全く検討違いでした。
また、私の勘違いだったら申し訳ありませんが、じゃんぬねっとさんが
すぐに答えを言わずに、自分で考えさせて答えに導こうとされていることも
感じました。

エラー内容との結びつけだけではなく、論理的に考えるようにしたいと思います。
ありがとうございました
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-01-26 15:26
私の勝手な意見を書いて申し訳ないのですが、
でも勉強になったのであえて書きます。

じゃんぬさんはスクリプトの記述ミスをご存知だったんですね・・・。
自ら気づかせてあげようとわざと教えてあげなかったんですね・・・。

私は人に教えるのが下手というかあまり指導した経験がないので、
目からウロコ落ちました。本当に素晴らしい指導者ですね。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-01-26 16:17
引用:

じゃんぬねっとさんの書き込み (2007-01-26 14:31) より:
lbla が undefined または null でないかを確認するのが先です。


厳密にいえば、form1がnullでないかですね。

<script>
var a = "a";
alert(a);
alert(a.b);
alert(a.b.c);
</script>
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-01-26 22:04
引用:

csOpenWindow.Append("window.opener.document." & "txta" & ".innerText = '" & 代入内容 & "' ;")


なんでこんな書き方するかなぁ?このへん<wankuma.com>の説明でわかるかな?文字列は、不変です。上記のコードでは、
"window.openner.document."
"txta"
"window.opener.document.txta"
".innerText"
"window.opener.document.txta.innerText"
... と、メモリが消費されます。(最適化されていると思うけど。)
コード:
csOpenWindow.AppendFormat( _
  "window.opener.document.{0}.innerText = '{1}';" _
  , txta.ClientID, 代入内容)


 txta は、サーバでの ID なので、クライアント上での ID を知るために、ClientID プロパティを使います。しかし、子画面のサーバコードでは親画面のコントロールはわかりませんから、子画面を呼び出すときに、何らかの方法で通知しておきます。
(他の画面の ID をハードコーディングするべきではないと思います。)
_________________

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