アプリ版:「スタンプのみでお礼する」機能のリリースについて

分からないことが一つ出てきました。
それは、フレーム間でのデータのやり取りで、
画面が2つからのフレームからなっており、左側のフレームでラジオ式のチェックボックスにチェックを入れるとそのvalueで指定している値が分割されて、右フレームのそれぞれのTextBoxに値が渡される。
例えば、valueで"国/県/都市"と値がある場合、右のフレームに引き渡されたときには、国、県、都市のTextboxに分割されて値が入るようにしたいのです。
そこで、以下のように左側のフレーム内(値を渡すほう)組んでは見たのですが・・・
function mname(){
var val;
with(document.form1){
for(var i=0;i<list.length;i++){
if(list[i].checked){
val = list[i].value;
}
namae = new Array(val);
namae[i] = "<cfoutput>#getnamae.kuni#/#getnamae.ken#/#getnamae.tosi#</cfoutput>";
data = namae[i].split("/");
parent.right.document.myform.kuni.value = data[0];
parent.right.document.myform.ken.value = data[2];
parent.right.document.myform.tosi.value = data[3];
}
}
}
ちなみに、ColdFusionを使っているので、namae[i]のところは、こうなっています。まずは、基本的なロジックが間違っていると思いますがよろしくお願いします。

A 回答 (1件)

これだとSQLで取得した一件目のデータがでてくるんじゃないですか?


・・・って、その後が間違ってるからでないか。(^^;;
valの中に、チェックされた値が入りますよね。
なので、その値を使用するように変更するのが1点。
後は、配列nameeとdataがごっちゃになってるのを修正するのが1点。
それと、なぜだか配列が[0][2][3]になっているので、ここを[0][1][2]にするのが1点。
それと中カッコのくくり方が正しくないのが1点です。

function mname(){
var val=""; ←ここは初期化した方がいいかも
with(document.form1){
for(var i=0;i<list.length;i++){
if(list[i].checked==true){ ←この聞き方の場合は、判定条件が必要なはずです
val = list[i].value;
}
}
}
data = new Array();
data = val.split("/");
parent.right.document.myform.kuni.value = data[0];
parent.right.document.myform.ken.value = data[1];
parent.right.document.myform.tosi.value = data[2];
}

こんな感じでしょうか。
中カッコのくくり方、気を付けてください。
特にループは気を付けないと無限ループ回りますよ。
どこからどこまでの処理を、各処理の中で使用しなければいけないかを判定できれば、この問題も解決できるはずです。

ちなみに、環境がわからないし、他のフレームとの関連も見えないので、動作確認はしていません。(というよりできません)

# それに今までの回答見たく、無視されちゃうかもしれないし。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
おかげで、希望どおりになりました。いまだ"[ ]”の使い方にはなれていないのと、初期化のことに気が回りませんでした。
どうも、ありがとうございます。

それと、言い訳っぽく聞こえるかもしれませんが、お礼や、ポイントをつけようとすると何故かブラウザ上でエラーが出てしまいどうしようもない状態になってしまったりしておりました。
ですから、折角の回答を無視したつもりではなかったのですが、不愉快な気分になられていましたのなら申し訳ございませんでした。
厳しいご意見もいただき、自分もこのままじゃいけないと思いますます気合入っています。
これからもよろしくお願いいたします。

お礼日時:2001/07/16 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!