昨日見た夢を教えて下さい

javescriptはかなりの初心者です。
サイトや本のサンプルで勉強してテキストボックス、チェックボタン、
ラジオボタンに記入した内容を保存するcookieの作成を試みたのですが
上手くいきません;;
どなたかご教授よろしくお願いします。

やりたい事はフォームに記入・チェックした内容をセレクトボタン
「保存1」「保存2」・・・と選択したら、それぞれにセーブ・ロードを複数記憶させたいと思っています。
5つほどの記憶を予定しています。

実際に保存させるフォーム数は数十個以上あり、テキストボックスの記入内容は数字だけの予定です。
また、それらは別途の計算するスクリプトでの入力内容として使っています。(競合とかの問題もあるのでしょうか?)
なお、下記の状態でもラジオボタンだけは保存も出来ませんでした;

作成したものを載せましたが、なにぶん初心者の作成したscriptな
だけに役に立たない構文で、説明不足もあるかもしれませんがよろしくお願いします。


<HTML>
<HEAD>
<script language="JavaScript">
<!--

function set_cookie(){
var a = document.getElementById('myform').a.value;
var b = document.getElementById('myform').b.selectedIndex;
var c = document.getElementById('myform').c.selectedIndex;
var d = document.getElementById('myform').d.checked;
var e = document.getElementById('myform').e[0].checked;
var f = document.getElementById('myform').e[1].checked;

EXP=new Date();
EXP.setTime(EXP.getTime()+(30*1000*60*60*24));
document.cookie= a+"["+b+"["+c+"["+d+"["+e+"["+f+"["+";expires="+EXP.toGMTString();
}

function get_cookie(){
var GET=document.cookie;
GET=GET.split("[");

document.getElementById('myform').a.value = GET[0];
document.getElementById('myform').b.selectedIndex = GET[1];
document.getElementById('myform').c.selectedIndex = GET[2];
document.getElementById('myform').d.checked = GET[3];
document.getElementById('myform').e[0].checked = GET[4];
document.getElementById('myform').e[1].checked = GET[5];

}

-->
</script>


</HEAD>
<BODY>
<form id="myForm">テキスト1<BR>
<INPUT size="20" type="text" maxlength="10" value="0" name="a"><BR>
<BR>
セレクト1<BR>
<SELECT size="2" name="b">
<OPTION value="0" selected>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
</SELECT><BR>
<BR>
セレクト2<BR>
<SELECT name="c">
<OPTION value="0" selected>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
</SELECT><BR>
<BR>
チェック1<BR>
<INPUT type="checkbox" name="d" value="0"><BR>
<BR>
ラジオ1<BR>
<INPUT type="radio" name="e" value="0"><BR>
<INPUT type="radio" name="e" value="1"><BR>
<BR>
<BR>
<SELECT name="selectsave">
<OPTION selected>保存1</OPTION>
<OPTION>保存2</OPTION>
<OPTION>保存3</OPTION>
<OPTION>保存4</OPTION>
<OPTION>保存5</OPTION>
</SELECT><BR>
<BR>
<INPUT type="button" value="セーブ" name="save" onclick="set_cookie()">
<P><INPUT type="button" value="ロード" name="lord" onclick="get_cookie()"><BR>
</P>
</form>
</BODY>
</HTML>

A 回答 (1件)

nameよりidがいいね。

ちょっと不都合がありそうだけど取り急ぎ!
<HTML>
<BODY>
<form id="myForm">テキスト1<BR>
<INPUT size="20" type="text" maxlength="10" value="0" name="a"><BR>
<BR>
セレクト1<BR>
<SELECT size="2" name="b">
<OPTION value="0" selected>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
</SELECT><BR>
<BR>
セレクト2<BR>
<SELECT name="c">
<OPTION value="0" selected>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
</SELECT><BR>
<BR>
チェック1<BR>
<INPUT type="checkbox" name="d" value="0"><BR>
<BR>
ラジオ1<BR>
<INPUT type="radio" name="e" value="0"><BR>
<INPUT type="radio" name="e" value="1"><BR>
<BR>
<BR>
<SELECT name="selectsave">
<OPTION value="v1" selected>保存1</OPTION>
<OPTION value="v2" >保存2</OPTION>
<OPTION value="v3" >保存3</OPTION>
<OPTION value="v4" >保存4</OPTION>
<OPTION value="v5" >保存5</OPTION>
</SELECT><BR>
<BR>
<INPUT type="button" value="セーブ" name="save" onclick="set_cookie()"><br>
<INPUT type="button" value="ロード" name="lord" onclick="get_cookie()">
</form>
<input type="text" size="50" id="sample">

<script language="JavaScript">

function set_cookie(){
o=document.getElementById('myform');
var v =[];
v[0] = o.a.value;
v[1] = o.b.value;
v[2] = o.c.value;
v[3] = o.d.checked;
v[4] = o.e[0].checked;
v[5] = o.e[1].checked;

saveCookie( o.selectsave.value, v.join('/'),30);
document.getElementById('sample').value=v.join('/');
}

function get_cookie(){
var o=document.getElementById('myform');
var GET=loadCookie(o.selectsave.value).split('/');
document.getElementById('sample').value=loadCookie(o.selectsave.value);//sapmle
document.getElementById('myform').a.value = GET[0];
setvalue(document.getElementById('myform').b, GET[1]);
setvalue(document.getElementById('myform').c, GET[2]);
document.getElementById('myform').d.checked = (GET[3]=='true')? true:false;
document.getElementById('myform').e[0].checked = (GET[4]=='true')? true:false;
document.getElementById('myform').e[1].checked = (GET[5]=='true')? true:false;

}
function setvalue(o,v){
for(i=0;i<o.length;i++) if(o[i].value==v) o[i].selected=true;
}

function saveCookie( vn, v, dy ){
if(navigator.cookieEnabled)
document.cookie = vn+ '='+ v+ ';expires='+ new Date((new Date()).getTime()+dy*24*3600000).toGMTString();
}
function loadCookie(vn){
var rt='';
if( vn && document.cookie ) {
var v = document.cookie.split(';');
for(i in v){ v[i].match(/^\s*(.*)=(.*)$/); if( RegExp.$1 == vn) { rt = RegExp.$2; break; } }
} return rt;
}

</script>
</BODY>
</HTML>
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございました。
これです、これがしたかったんです。
書いていただいたスクリプトは初心者には難しくて
本を片手になんとなくしか理解できませんが、
やっぱり複雑なスクリプトじゃないとダメ
だったんですね。
勉強になりました。
ありがとうございました。

お礼日時:2008/03/22 16:06

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