(ボタンを押すとcookieが読み込まれ、切り出した結果をここに表示します)
変数nには、見つけた場合はその先頭位置を、見つからなかった場合は-1が代入されます。次のif文で条件分岐をしています。
*2:1つのcookieの区切りである「;」の位置を探します。
検索の先頭位置を「n c_name.length」としています。これは、変数nにcookie名の最初の位置があるため、cookie名の長さを足して、データの始まり位置から探すという意味です。*4でデータの切り出しの時にも同じ先頭位置を使っています。
*4:cookieから目的のデータを切り出しています。この時点でデコード処理も実行しています。
*5:cookieが見つからなかった場合に変数dataの初期値を決めておきます。
変数の設定がないまま後の処理で変数を参照するとエラーが発生しますので、必ず変数の値を設定しましょう。
cookieの保存で行った複数項目をまとめて保存した場合の読み込み方法です。
データの仕切りに文字を使っているので、読み込んだデータを切り分ける作業と、切り分けたデータを変数やフォームに振り分ける作業が必要になります。
(*1) 変数dataに対して、split()を使って文字列を切り分けていますので、配列変数dataになります。
配列変数dataを使っているということは、data[0]からdata[19]までの20個のデータがあるという想定でfor文が組まれています。
保存の時にすべての項目の後ろに「_」を足しているので、実際は21個のデータがあり、data[20]は空のデータとなっています。
このとき、data.lengthの値は21です。これは今回の保存時の処理によってできた若干の問題点です。
上記のように処理する個数が決まっている場合は問題ないのですが、保存時に個数が変動する場合、for文でdata.lengthを使って処理回数を求める場合にちょっとした工夫が必要になります。
保存時に、最後のデータだけ仕切り文字を付けない工夫もできますが、それよりもこちらの方が簡単に対処できます。
また、cookieの中にデータの個数を記録して置く方法でも構いません。その時は、データの位置が変わらない最初の方に置いておくと確実に取り出せます。