現在JavaScriptの<SCRIPT>タグ内で宣言されている配列データを

webページ上に表示されているボタンを押すことで
cookieに吐くような関数を作成したのですが

IE5.5からボタンを押した場合はcookieファイルを吐き出していることを確認できたのですが
NC4.75ではcookie.txtが更新されていることを確認できませんでした。

(株)翔泳社 JavaScript辞典 アンク著

を見る限りでは
IE5.5でもNC4.75でも
document.cookie ="keyName" + "配列" + "expires =Mon.31-Dec-2001 23:59:59;";
で書き込めると思うのですが・・・。

キー名と有効期限の他にもセットしなければいけない値があるんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

IEは使わないのですが、NCで思い当たることをみっつ。



ひとつは、設定で、Cookie を受け付ける指定になってない。
「設定」の「詳細」のところで確認してみてください。

もうひとつは、ちょっと文法が気になること。質問に書かれたのは
このままのソースなんでしょうか?

セミコロンやイコールの数がちょっと足りない。参考URLには、
Netscape のページを示しておきます。英語が苦手なら、
「とほほのWWW」にも同様の記述があるので、参考にしてください。

最後は localhost だと Cookie のファイルに出力されない、という
こと。

# どれかが該当すると良いのですが…

参考URL:http://developer.netscape.com/docs/manuals/commu …

この回答への補足

>質問に書かれたのはこのままのソースなんでしょうか?

ソース全部書くのはちょっとしのびなかったので
少し省略してしまいました以下がソースです。

----ここから----------->
<HTML>
<SCRIPT LANGUAGE="JavaScript">
var str = "|||||||||+|||||||||||+11111111";

function hoge(str){
var strdata;
var month,weeks,today,y,m,d,w;
today = new Date()
weeks = new Array("Sun","Mon","Tue","Wed","Thu","Fry","Sat");
month = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

y = today.getFullYear();
m = month[today.getMonth()+1];
d = today.getDate();
w = weeks[today.getDay()];
strdata ="strdata = "+ str+";";
strdata += "expires ="+w+ "," +d+ "-" +m+ "-" +y+ " 23:59:59;";
document.cookie = strdata;
alert(strdata) ;
}
</SCRIPT>
<BODY>
<FORM NAME="FORM1">
<INPUT type="button" value="せっとクッキー" onClick="hoge(str);">
</FORM>
</BODY>
</HTML>

補足日時:2001/05/24 11:17
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。

>ひとつは、設定で、Cookie を受け付ける指定になってない。

確認しました。
cookieを受けつける指定になっているようです。

>セミコロンやイコールの数がちょっと足りない。
大変失礼いたしました。(汗
補足にソース全文(つまりイコールやセミコロンが正しく設定されているもの)
を乗っけました。

>localhost だと Cookie のファイルに出力されない、という事。

う~ん。
現在、私はWebサーバ上にファイルをアップしてから確認しています・・・
ただサーバにはLANで繋がってるんですけど、その場合も駄目なんですかね。

お礼日時:2001/05/24 11:41

全部はずれましたか (^^;



> 現在、私はWebサーバ上にファイルをアップしてから確認しています・・・
> ただサーバにはLANで繋がってるんですけど、その場合も駄目なんですかね。

は、OKですよ。

ソースに書いてある記述で、Netscapeのドキュメントの記載と違うところが
怪しいですね。

・イコールの前後の空白を取る
・「日」が二桁になっているか
・曜日の後のカンマの後に空白を付ける

かなあ。三番目のは ARC さんの記述によると必要無いかも。
後、GMT の表記は無くてもOKですよ。手元に、無くても
cookie を保存できているコードがあります。

何かの参考になるかもしれないので、手元のコードのひとつを
載せておきます。配列を保存しているわけではないですが、
NC4.7では動作してます。

tmp = "ID=" + id.value + "; "
tmp += "path=/cgi-bin/XXXX.rb; "
tmp += "expires=Fri, 31-Dec-2030 23:59:59; ";
document.cookie = tmp;

# 状況は絞れてきたものの、やっぱり解決する自信はないです (^^;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

その後お二人のおっしゃる方法を
全て試してみたのですがやっぱり私のNCのcookie.txt
にクッキーを吐くことができませんでした。

カンマもスペースも全てチェックしてみましたけど・・・。
駄目でした。(TT;

きっともう私のNCが壊れているのでしょう。。。(泣)

とりあえず今からNC入れなおしてみて、(おそらく無駄な努力)
それで動かないようったらもう諦めます。。。(号泣)


こんな馬鹿な質問に答えてくださったa-kumaさんARCさん
有難うございました。

お礼日時:2001/05/25 13:58

ネスケはIEよりも構文に厳しいのでエラーになってしまったのかも。

ひょっとしたら、
expires =Mon.31 …
をexpires =Mon, 31 にすると動くかも(ピリオドでなく、コンマ)
あと、配列のあとに「;」が無いのも気になります。


とりあえず、IE5.5, NN6.01対応のコードを書いてみました。 NN4.75は手元に無いんで、試してません。

function SetCookie(){
  var hoge = new Array(1,2,3) ;
  document.cookie="hogeValue=" + hoge + "; expires=Fri, 01-Jun-2001 00:00:00 GMT;";
  alert (document.cookie);
};
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。

";expires=~~~~~

の最後にはGMTの表記が必要なのですね。
試してみようと思います。

お礼日時:2001/05/24 11:50

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

このQ&Aと関連する良く見られている質問

Qボタンを押すとテキストボックスが増えるJavaScriptについて教えてください

Javascriptで質問です。
<input type="text" name="hoge1" value="">
<input type="text" name="hoge2" value="">
<input type="text" name="hoge3" value="">

というようなテキストボックスがあり、「追加」というボタンを押すと
新たなテキストボックス
<input type="text" name="hoge4" value="">
が追加されるようなJavascriptを作成したいと考えています。

新たに作られたテキストボックスには
name="hoge4"
name="hoge5"



というように、nameの部分に「hogeの右にある番号に1ずつ加算された名前」を付けていきたいのです。

検索すると、テキストボックスを追加していくだけのサンプルはいくつかあったのですが、nameの部分を加算していく、という例が無くて行き詰っています。

よろしくお願いいたします。

Aベストアンサー

innerHTMLを使えば簡単に再現できますけど…^^;
とりあえず、ここはappendChildを使うほうで。
******************************
<script type="text/javascript">
var tag_num = 4;
function myAdd(){
var oTag = document.createElement("input");
oTag.setAttribute("type", "text");
oTag.setAttribute("name", "hoge" + tag_num++);
var oDiv = document.getElementById("area");
oDiv.appendChild(oTag);
}
</script>
******************************
<span id="area">
<input type="text" name="hoge1" value="">
<input type="text" name="hoge2" value="">
<input type="text" name="hoge3" value="">
</span>
******************************

こんな感じかな?

innerHTMLを使えば簡単に再現できますけど…^^;
とりあえず、ここはappendChildを使うほうで。
******************************
<script type="text/javascript">
var tag_num = 4;
function myAdd(){
var oTag = document.createElement("input");
oTag.setAttribute("type", "text");
oTag.setAttribute("name", "hoge" + tag_num++);
var oDiv = document.getElementById("area");
oDiv.appendChild(oTag);
}
</script>
*******************...続きを読む

QJavascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

var data = [
[1,2,3],
[4,5,6],
[7,8,9]
];

for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].length; j++){ <--- ここで lengthのオブジェクトがNullというエラーになります。
alert(data[i][j]);
}
}

よろしくお願いいたします。

Aベストアンサー

再現しません。

検証環境は以下とまったく同じです。
http://oshiete1.goo.ne.jp/qa3101381.html

Q3102333.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>実験</title>
<style type="text/css">
p{background-color:red;}
</style>
<script type="text/javascript" src="Q3101381.js"></script>
</head>
<body>
<p onclick="hoge();">ほげ</p>

</body>
</html>

Q3102333.js

function hoge(){

var data = [
[1,2,3],
[4,5,6],
[7,8,9]
];

for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].length; j++){
alert(i +":" + j +":" + data[i][j]);
}
}
}

0:0:1
から
2:2:9
まで全て表示されました。

再現しません。

検証環境は以下とまったく同じです。
http://oshiete1.goo.ne.jp/qa3101381.html

Q3102333.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>実験</title>
<style type="text/css">
p{background-color:red;}
</style>
<script type="text/javascript" src="Q3101381.js"></script>
</head>
<body>
<p onclick="hoge();">ほげ</p>

</body...続きを読む

QASP By Cookie を JavaScript で見たい

ASP で以下のように書き込んだクッキーを、JavaScript
で見るにはどうしたらいいのでしょうか。

Response.Cookies(\"count\") = nCount

本にならって、 SConunt = getCookie(\"count\");
とやっても取得されないばかりか、
「オブジェクトを指定してください。」というエラーが
返ってきてしまいます。

ちなみに、ASPで、Request.Cookies(\"count\") とやると
ちゃんと中身が見えます。
どうかよろしくお願いします。

Aベストアンサー

こんにちは。itohhといいます。

Cookieは、1つしか設定させていないのであれば、

SConunt = document.cookie;
で、OKです。
ただし、複数の項目を設定している場合は、SConuntの中に”;”で区切られた形で
1度に返してきますから、自分で切り出さなければいけません。
ご存じだと思いますが、ASPでは、SessionIDという項目をASPが自動的に設定しますので
ご自身では、1つしか設定していなくても
SessionID=xxxxxxxxxxxxxx;count=10

という形で設定されているはずです。

この辺のとこを説明しているHPを紹介しますので参考にしてみてください。
(切り出し方も載っていますよ。)
JavaScript例文辞典
URL:http://www.openspc2.org/reibun/javascript/
とほほのWWW入門
URL:http://tohoho.wakusei.ne.jp/www.htm

QJavaScriptとcookieでページ振り分け。

例えば、index.htmlでcookieの有無を確認して、有りなら
リピーターページ(index2.html)に。
無しなら、はじめましてページ(index1.html)にして、ヘ
ルプの内容を充実させる、、、と。
cookieは、index1.htmlで食べさせる、、、と。

こんなことをやると面白いと思うのですが、あまり前例も
無いようですし、ひとしきり探してみたのですが、見あた
りません。
詳しければ、カンタンに作れそうなんですけど、私にはと
てもとても、、、
ぜひぜひ、アドバイスをお願いいたします。

Aベストアンサー

時間に余裕があれば作ってもいいのですが・・・
せめて、参考になるページだけ挙げておきます。

クッキーに保存されたデータを読み込む
http://203.141.192.39/special/009/

クッキーにデータを書き出す
http://203.141.192.39/special/008/

あとは、
document.location.href="ジャンプ先URL"
でページ切り替えを行えば良いかと思います。

参考まで

参考URL:http://203.141.192.39/special/009/,http://203.141.192.39/special/008/

QCookieの回数で閲覧制限、javascript

javascriptでCookieを取得し、閲覧回数と、閲覧した日付で、
1日3回しかページを閲覧することが出来ないコンテンツを作りたいと思っています。

以前のどなたかの質問にあったのを見つけたのですが、
解決をしていましたが、私がいざ行ってもまったくできなかったため、
改めて、間違っている部分と正確なソースをどなた様かご教授いただけませんでしょうか?
※名前の保存はなしにできればしたいです…。
どうかよろしくお願いいたします。

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

/* クッキーに登録する汎用関数     */
/* 書式 : mySetCookie(クッキー名,値,有効期限日数) */
/* 戻り値 : なし(void) */
function mySetCookie(myCookie,myValue,myDay){
myExp = new Date();
myExp.setTime(myExp.getTime()+(myDay*24*60*60*1000));
myItem = "@" + myCookie + "=" + escape(myValue) + ";";
myExpires = "expires="+myExp.toGMTString();
document.cookie = myItem + myExpires;
}

/* クッキーを取り込む汎用関数 */
/* 書式 : myGetCookie(クッキー名) */
/* 戻り値 : 値(string) null:該当なし */
function myGetCookie(myCookie){
myCookie = "@" + myCookie + "=";
myValue = null;
myStr = document.cookie + ";" ;
myOfst = myStr.indexOf(myCookie);
if (myOfst != -1){
myStart = myOfst + myCookie.length;
myEnd = myStr.indexOf(";" , myStart);
myValue = unescape(myStr.substring(myStart,myEnd));
}
return myValue;
}
// --></script>
<script language="JavaScript"><!--
myD = new Date();
myYear = myD.getYear();
myYear4 = (myYear < 2000) ? myYear+1900 : myYear;
myMonth = myD.getMonth() + 1;
myDate = myD.getDate();
myYMD = myYear4 + "/" + myMonth + "/" + myDate;

myUser = myGetCookie("USER_NAME"); // 名前読込

if (myUser == null){ // 初めての訪問
myUser = "匿名";        
mySetCookie("USER_NAME",myUser,365); // 名前保存
mySetCookie("USER_DATE",myYMD,365); // 訪問日保存
myLast = myYMD; // 前回訪問日とする
myCount = 1; // 訪問回数→初回
} else { // 2度以上の訪問
myCount = eval(myGetCookie("USER_COUNTER")); // カウンター読込
myLast = myGetCookie("USER_DATE"); // 前回訪問日読込
  if ( myYMD == myLast){ // 前回訪問日が今日だったら
  window.location = "sorry.html";    // 1日1回しか閲覧出来ないことを伝えるページに飛ばす
}
}
myLast = myYMD; // 前回訪問日を更新する
myCount = myCount +1; // 閲覧回数を追加する
mySetCookie("USER_COUNTER",myCount,365); // カウンター更新
mySetCookie("USER_NAME",myUser,365); // 名前の賞味期間を更新
// --></script>
----------------------------------

javascriptでCookieを取得し、閲覧回数と、閲覧した日付で、
1日3回しかページを閲覧することが出来ないコンテンツを作りたいと思っています。

以前のどなたかの質問にあったのを見つけたのですが、
解決をしていましたが、私がいざ行ってもまったくできなかったため、
改めて、間違っている部分と正確なソースをどなた様かご教授いただけませんでしょうか?
※名前の保存はなしにできればしたいです…。
どうかよろしくお願いいたします。

----------------------------------
<script language="JavaScript"><!-...続きを読む

Aベストアンサー

[間違い]
二度以上の訪問時に、訪問日が保存されていない(最終行あたり)
sorry の条件に、訪問回数が三回より大、の条件が不足
前回訪問日が今日より前なら、訪問回数の初期化が必要

[戯言]
変数に var を付け忘れてるのでデバッグが大変
eval ダメ絶対
getYear 非奨励なので getFullYear を
そもそも全体的に古い書き方だから、もっといいコピペ元を探すべき


このカテゴリの人気Q&Aランキング

おすすめ情報