こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

cookieを使わずにチェックした場所を覚える

度々お世話になっております。

--------------------
|     topWin     |
--------------------
| leftWin | rightWin |
--------------------
●この様に3つにフレームが分かれており、rightWinにはチェックボックスが10個あり、数ページある。onclickで何番目がチェックされているか調べる。
●チェックされている場所を配列に入れてtopWinに受け渡す。
●rightWinがonloadしたら、topWinに受け渡した配列の中身を呼び出して、チェックする。
つまり、右のチェックフォームのページを変えてもチェックが外れないようにしたい…という事がやりたいのですが、いまいちonloadの書き方が分からず、上手く処理が出来ません。
以下が私の書いた処理です。

フレーム名:topWin
(このtopWinにページ入れ替えのリンクがある)
var checkData2 = new Array(0);// 配列checkData2の宣言
function loadData(checkData2){// ロード時にチェックを入れる関数
alert("topのcheckData2.length = " + checkData2.length);// データが渡ってきているか確認用alert
alert("topのcheckData2 = " + checkData2);// データが渡ってきているか確認用alert
for(k = 0; k <= checkData2.length-1; k++){// checkData2の数分ループ
parent.rightWin.rfm1.data1[parseInt(checkData2[k])].checked = true;// チェックボックスにチェックを入れる
}
parent.rightWin.Data(checkData2);
}
-->

フレーム名:leftWin
このチェックボックスでは使いません

フレーム名:righttopWin
(ここにチェックボックス数ページ入る)
function TotalData(){ // チェックボックスを調べる関数
var checkData = new Array(0);// 配列checkDataの宣言 初期は0
for (i=0; i <= document.rfm1.length-1; i++){ // チェックボックスの数分ループ
if (document.rfm1.elements[i].checked == true){ // チェックされていたら…
checkData.push(i); // チェックのある項目の番号を覚える配列
}
}
parent.topWin.loadData(checkData);// topWinにcheckDataを受け渡す
}
-->
</script>
</head>
<body onload="parent.topWin.loadData(checkData2)">
<center>
<form name="rfm1">
<input type="checkbox" name="data1" value="100" onclick="TotalData()">商品1-1<br>(100)
<input type="checkbox" name="data1" value="200" onclick="TotalData()">商品1-2<br>(200)
…とチェックボックスが10個続きます。

現状:rightWinからtopWinには情報の受け渡しは出来ている。
   rightWinのonload時にtopWinから上手く情報が受け渡し出来ていない?

cookieを使うのが一般的なのは知っていますが、今回はなるべく使わずに作りたいので、cookie有無は不問でお願いいたします。
どうか、皆様の知恵をお貸しください。

投稿日時 - 2007-06-25 21:53:02

QNo.3115561

すぐに回答ほしいです

質問者が選んだベストアンサー

一番解り易いのはページ移動のときに
****/****/***.html?check0=true&check1=false..........
として渡すのが解り易いと思います
受け取り例
var h = window.location.href.split('?')[1].match(/\w+=[^\&]+/g);
f=document.forms[0].elements["data1"]
for(var i=0;i<h.length;i++){
if(h[i].split('=')[1] = "true"){
f[i].checked = true;
}
}

渡す側はframes[2]のforms[0]のelements["data1"]のチェック具合を見ながら?以降を作ってそれをつけてframes[2]のlocationを変えるようにすれば良いと思います。
これなら渡す方も受け取る方も単純で目で見て確認しながらできますよ。

投稿日時 - 2007-06-25 22:42:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

もう一つデータ格納用のフレームを作る。

投稿日時 - 2007-06-25 23:14:00

あなたにオススメの質問