WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:promptを使ってのクイズ

0:[投稿] manet [URL] [2002/04/11 10:02 ][環境:WIN+IE わからない]

promptを使ってクイズを作ってたんですが
↓のスクリプトだとIE5以下やOperaだとエラーが出る事がわかりました。IE6で動作確認してたんで。
でも、どこを修正していいかわかりません。
どうしたらいいんでしょう?
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>新しいページ 1</title>
</head>

<body>
<script language='JavaScript'>
<!--
i=0;
res='';
a=new Array();
b=new Array();
c=new Array();

a[0]='ホストコンピュータなどと情報受け渡しを行う機器は?'; // 問題
a[1]='複数のコンピュータなどとツイストペアケーブルで接続する機器は?';
a[2]='データ伝送距離の延長のために信号を増幅する中継装置は?';
a[3]='ネットワークを接続する装置で、データの送信先(IPアドレス)をもとに、\nデータをどの経路へ流すかを判断するルーティング機能を持つものは?';
a[4]='LANを拡張するための装置で、データの送信先(MACアドレス)をもとに、\n必要のあるデータだけを中継するフィルタリング機能を持つものは?';

b[0]='ゲートウェイ';// 答え1
b[1]='HUB';  
b[2]='リピータ';
b[3]='ルータ';
b[4]='ブリッジ';

c[0]='ゲートウェイ'; // 答え2
c[1]='ハブ';
c[2]='リピータ';
c[3]='ルータ';
c[4]='ブリッジ';

while(i!=5){
res=prompt('問'+(i+1)+' '+a[i]);

//------------------------------------------------------------

var pos = res.indexOf(unescape('%00'));    // -1であればnullを含まない。それ以外の場合は何文字目にnullを含むかを返す
   if(0 <= pos)   // null文字を含んでいたらという意味
       res = res.substr(0,pos);   //resにnullの直前までの文字列を代入
   
//------------------------------------------------------------          
       
if(res==b[i] || res==c[i]){
alert('正解です!');
i++;
if(i==5)
great();}
else {alert('Game Over!\nまた挑戦してね♪');i=5;}
}

function great(){
alert('おめでと〜♪全問正解だね☆初級シスアド本番でも制しましょ〜‡\nOKを押すとバナナの部屋にいけます。');
window.location='http://mgs3.uic.to/monkey.cgi?room=manet';
}
//--></script>


</body>

</html>

エラー内容。。。
ライン:26
文字:12
エラー:文字が正しくありません。
コード:0
URL:http://www5b.biglobe.ne.jp/~ly877/prompt2.html


1:[回答] のぐりん [MAIL] [2002/04/11 10:18 ]

if(...)の後ろの{が抜けてるところが
何点かあるみたいです。
ここが、エラーになるのではないでしょうか?


2:[回答] ween [2002/04/11 11:32 ]

b[1]='HUB';
の後に全角スペースが2個入っています。
ソース中の全角スペースが空白文字として有効なのは
ECMA-262 第3版以降なので、
最近の JavaScript 実装でなければエラーになる確立が高いでしょう。


3:[回答] ween [2002/04/11 11:36 ]

あ。×確立→○確率 ですね。


4:[完了] manet [URL] [2002/04/11 12:26 ]

ほんとですね。
全角スペースを2つはずしたら、IE5でもできるようになりました。
どうもありがとうございました。


5:[質問] saori [MAIL] [URL] [2002/04/11 20:32 ]

こんにちは、いつもお世話になっています。
manetさんと一緒に今回このJavaScriptのお勉強をしていたんですが、
わからなかったので、わたしがここのBBSをご紹介しました。
IE5はmanetさんが正常に動作を確認してくださったのですが・・・
わたしの環境ではまだ動きません
便乗してすみませんが教えてください。

WIN−Me 
IE6(正常に動作)
N6.2(いつも不正解になります)
Opera6(正解になりますが、プロンプトに表示される文字が化けます)

スペースは全角が無いことを確認済みです
http://www5b.biglobe.ne.jp/~ly877/test2.htm


6:[回答] ween [2002/04/11 22:24 ]

> N6.2(いつも不正解になります)
試してみました。常に不正解になりますね。
で、調べてみたところ、 Netscape では
unescape('%00') の結果が長さ 0 の空文字列になるために pos=0 となり、
プロンプトに何を入力しても全て切り落とされてしまうことが原因のようです。
res.indexOf(unescape('%00')) の代わりに res.indexOf('\x00') を使うようにすると
Netscape でも上手くいくようですが、どうでしょう?


7:[保留] saori [MAIL] [URL] [2002/04/12 22:39 ]


書き直したらどのブラウザでもまったく動かなくなりました
http://www5b.biglobe.ne.jp/~ly877/test3.htm

たぶん教えていただいていることの意味が
ぜんぜん飲み込めてないので間違ったことをしている気がします
ちょっと土日で勉強してみます


8:[回答] のぐりん [MAIL] [2002/04/15 09:05 ]

私の環境では。起動時に、";"がありませんってエラーが出ます。
var res.indexOf('\x00')の後ろに";"がないからでは?

環境:NT4.0 SP6 IE5.5SP2(MS Visual Studio 6.0インストール済み)


9:[回答] ween [2002/04/15 12:07 ]

var は変数宣言をする文ですから
 var 変数名;
とか
 var 変数名=式;
でなければエラーになります。


10:[回答] manet [MAIL] [URL] [2002/04/15 12:26 ]

var res.indexOf('\x00') を
var pos=res.indexOf('\x00');

としたら、IE5.0では正常に動作します。
あとは、saoriさんにNNとOperaで動作確認してもらえたら完了です。いろいろありがとうございます。


11:[完了] saori [MAIL] [URL] [2002/04/15 21:21 ]

動作確認しました
http://www5b.biglobe.ne.jp/~ly877/test4.html

Windows Me
N6.2(正常に動作)
IE6(正常に動作)
Opera6(promptのローカルでもバーコードのような文字化け、いつも不正解)

なんかOpera6は、あきらめてしまおうかな?という気分です
取りあえず終了?(manetさん終了にしちゃった♪てへっ)
みなさんありがとうございました

>>9 weenさん
変数の正しい書き方を知らなかったことにボウゼンとしました(^^;
今までは作りたいものがあったら、必要な部分だけ調べるって感じだったので
ちゃんとお勉強したほうがイイかも?って反省中です

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World