ここから本文です

JavaScriptで子から親ウインドウへ配列データを渡せない。

niikoujpさん

2014/2/610:34:57

JavaScriptで子から親ウインドウへ配列データを渡せない。

Windows8.1、IE11、JavaScript+Ajax(php)でWebアプリを開発しています。

親ウインドウでデータをDBから取得し、
レコード順の配列[]と
各レコードには連想配列(というかJSONデータ)で値が入っております。
実際にはフィールドはもっと多いのですがこんな感じです。
data[0]={id:1001,name:'山田'};
data[1]={id:1002,name:'鈴木'};

子ウインドウで、
1行分だけ親のレコードを取得し、詳細情報の編集入力をさせています。
編集したいレコード番号をn番目とすると取得はこんな感じです。
var tmp=window.opener.data[n];

編集後、親ウインドウのdataにレコード1行分の値を戻します。
window.opener.data[n]=tmp;

子ウインドウが閉じるまでは、data[n]に変更された値を確認できるのですが、
子ウインドウが閉じると、data[n]がnullになってしまいます。

1)これはひょっとして、JavaScript値を「参照渡し」しているのでしょうか。
配列ではなく、文字列などだと「値のコピー渡し」をしているようです。
JavaScriptにはCの変数や関数のポインタの概念がないと思っていましたが、あるのでしょうか。


2)明確にJavaScriptで「値渡し」をするにはどうすれば良いでしょうか。

閲覧数:
1,516
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

編集あり2014/2/611:09:42

それは、オブジェクトのコピーや clone で実装します。
JavaScript の場合、オブジェクトや配列は基本参照渡しになります。
JQuery を使った方法や、clone.js を使った方法が紹介されています。
http://monopocket.jp/blog/javascript/2137/
http://stackoverflow.com/questions/122102/most-efficient-way-to-clo...
http://sunabako.sblo.jp/article/46451744.html

質問した人からのコメント

2014/2/6 12:54:57

成功 回答ありがとうございます。
>JavaScript の場合、オブジェクトや配列は基本参照渡しになります。
納得いたしました。
またご紹介いただきましたJQueryの$.entendでコピーをする事ができました。
本当にありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。