CGI(掲示板)でJAVASCRIPT
[上に]
[前に]
[次に]
ある
2000/06/05(月) 18:40:47
掲示板でJAVASCRIPTを使おうと思ったのですが、
最後の方にあるdocument.allからはじまる行で
JAVASCRIPTのエラーが出てしまいます。
'document.all[...].style'はオブジェクトではありません。
というものです。
赤ラウンジと青ラウンジのどちらで書くか迷ったのですが、
htmlファイルの場合は正常に動いたのでこちらに書きました。
以下ちょっと長いですがJAVASVRIPTの部分です。
何かお気づきの点がありましたら教えてもらえませんでしょうか?
print "<SCRIPT LANGUAGE=\"JavaScript1.2\">\n";
print "<!-- Original: Altan \(snow\@altan.hr) -->\n";
print "<!-- Web Site: http://www.altan.hr/snow -->\n";
print "<!-- Begin\n";
print "var no = 15; // snow number\n";
print "var speed = 10; // smaller number moves the snow faster\n";
print "var snowflake = \"images/snow0.gif\";\n";
print "var ns4up = (document.layers) ? 1 : 0; // browser sniffer\n";
print "var ie4up = (document.all) ? 1 : 0;\n";
print "var dx, xp, yp; // coordinate and position variables\n";
print "var am, stx, sty; // amplitude and step variables\n";
print "var i, doc_width = 800, doc_height = 1800;\n";
print "if (ns4up) {\n";
print "doc_width = self.innerWidth;\n";
print "//doc_height = self.innerHeight;\n";
print "} else if (ie4up) {\n";
print "doc_width = document.body.clientWidth;\n";
print "//doc_height = document.body.clientHeight;\n";
print "}\n";
print "dx = new Array();\n";
print "xp = new Array();\n";
print "yp = new Array();\n";
print "am = new Array();\n";
print "stx = new Array();\n";
print "sty = new Array();\n";
print "for (i = 0; i < no; ++ i) { \n";
print "dx[i] = 0; // set coordinate variables\n";
print "xp[i] = Math.random()*(doc_width-50); // set position variables\n";
print "yp[i] = Math.random()*doc_height;\n";
print "am[i] = Math.random()*20; // set amplitude variables\n";
print "stx[i] = 0.02 + Math.random()/10; // set step variables\n";
print "sty[i] = 0.7 + Math.random(); // set step variables\n";
print "if (ns4up) { // set layers\n";
print "if (i == 0) {\n";
print "document.write(\"<layer name=\"dot"+ i +"\" left=\"15\" top=\"15\" visibility=\"show\"><img src=\"" + snowflake + "\" border=\"0\"></layer>\");\n";
print "} else {\n";
print "document.write(\"<layer name=\"dot"+ i +"\" left=\"15\" top=\"15\" visibility=\"show\"><img src=\"" + snowflake + "\" border=\"0\"></layer>\");\n";
print " }\n";
print "} else if (ie4up) {\n";
print "if (i == 0) {\n";
print "document.write(\"<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src=\"" + snowflake + "\" border=\"0\"></div>\");\n";
print "} else {\n";
print "document.write(\"<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src=\"" + snowflake + "\" border=\"0\"></div>\");\n";
print " }\n";
print " }\n";
print "}\n";
print "function snowNS() { // Netscape main animation function\n";
print "for (i = 0; i < no; ++ i) { // iterate for every dot\n";
print "yp[i] += sty[i];\n";
print "if (yp[i] > doc_height-50) {\n";
print "xp[i] = Math.random()*(doc_width-am[i]-30);\n";
print "yp[i] = 0;\n";
print "stx[i] = 0.02 + Math.random()/10;\n";
print "sty[i] = 0.7 + Math.random();\n";
print "doc_width = self.innerWidth;\n";
print "//doc_height = self.innerHeight;\n";
print "}\n";
print "dx[i] += stx[i];\n";
print "document.layers[\"dot\"+i].top = yp[i];\n";
print "document.layers[\"dot\"+i].left = xp[i] + am[i]*Math.sin(dx[i]);\n";
print "}\n";
print "setTimeout(\"snowNS()\", speed);\n";
print "}\n";
print "function snowIE() { // IE main animation function\n";
print "for (i = 0; i < no; ++ i) { // iterate for every dot\n";
print "yp[i] += sty[i];\n";
print "if (yp[i] > doc_height-50) {\n";
print "xp[i] = Math.random()*(doc_width-am[i]-30);\n";
print "yp[i] = 0;\n";
print "stx[i] = 0.02 + Math.random()/10;\n";
print "sty[i] = 0.7 + Math.random();\n";
print "doc_width = document.body.clientWidth;\n";
print "//doc_height = document.body.clientHeight;\n";
print "}\n";
print "dx[i] += stx[i];\n";
print "document.all[\"dot\"+i].style.pixelTop = yp[i];\n";
print "document.all[\"dot\"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);\n";
print "}\n";
print "setTimeout(\"snowIE()\", speed);\n";
print "}\n";
print "if (ns4up) {\n";
print "snowNS();\n";
print "} else if (ie4up) {\n";
print "snowIE();\n";
print "}\n";
print "// End -->\n";
print "</script>\n";
長文申し訳ありません。m(_ _)m
ヒソカ
2000/06/05(月) 19:03:10
本題の質問とは直接関係しませんが、
ブラウザチェックはCGI側で行って、
吐き出すJavaScriptをブラウザによって変えた方が
スッキリするんじゃないかな?
なんか、コードが見づらい。
:-)
2000/06/05(月) 19:15:54
> なんか、コードが見づらい。
そうっすよ。ぱーるにはヒアドキュメントって便利なもんあるんだから。
print <<EOM;
<script language="javascript1.2">
<!--
// -->
</script>
EOM
動作確認したスクリプトそのまんま貼っつければ動くでしょ。
偽
2000/06/05(月) 19:20:18
やっぱり本題とは関係ないんですが、
> print "<!-- Original: Altan \(snow\@altan.hr) -->\n";
> print "<!-- Web Site: http://www.altan.hr/snow -->\n";
は、どうかと思うぞ。
ここは既にJavaScriptなんだから、HTML形式のコメントは使うべきじゃないです。
あと、</div>みたいな奴をJavaScriptに書き込むのはNG。
@_@
2000/06/05(月) 21:09:29
</div> -> <\/div>
print "// <!-- Original: Altan \(snow\@altan.hr) -->\n";
print "// <!-- Web Site: http://www.altan.hr/snow -->\n";
ある
2000/06/05(月) 22:04:12
[[解決]]
えっと・・・とりあえずヒアドキュメントというのを試してみます。
ありがとうございました。
著作権表示は消すなって書いてあったのでそのままにしてました。^^;
偽
2000/06/06(火) 00:35:32
あの、解決でいいんですか?
ちゃんと、うまく動くのを確認してからの方がいいと思いますけど。
ある
2000/06/06(火) 01:24:00
正直に言えば皆さんの助言の内容が想像をはるかに越えてました。
CGIをHTMLレベルで改造するってのはよくやってるんですけど、
JAVASCRIPTの知識は全くないんです。
結局ヒアドキュメントを試しても
JAVASCRIPTでエラーが出てしまいました。
私程度でもPCを知らない人には色々聞かれますので、
一から説明する大変さはよくわかります。
ですからもう少し予備知識をつけてからにしようかと思います。
偽さん、お気遣いありがとうございます。
アドバイスをくださった方々もありがとうございました。
[上に]
[前に]
[次に]