WEB相談室

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

タイトル:特別なプロンプトの組み方

0:[投稿] manet [URL] [2002/05/03 13:44 ][環境:WIN+IE わからない]

私がGaiaXっていうところでサーバを借りていますが、そこでは
カンマとダブルクォートが使えないのでJavaScriptを組むときは
document.writeでスクリプトを丸ごと書いてしまう方法を使ってます。で、質問ですが、

<SCRIPT language='JavaScript'><!--
function bagu2(){
  Q=prompt('日本一面積が広い都道府県名を入力してください。','');

//--------------------------------------------------
var pos = Q.indexOf('\x00');
   // -1であればnullを含まない。それ以外の場合は何文字目にnullを含むかを返す

   if(0 <= pos){ // null文字を含んでいたらという意味
       Q = Q.substr(0,pos);}
       //resにnullの直前までの文字列を代入
//---------------------------------------------------

    if(Q=='北海道') alert('正解です!');
    else alert('残念!不正解です。');
    }
// --></SCRIPT>
<form>
<input type=button value='スタート' onClick=bagu2()><hr>
</form>

このスクリプトをGaiaXでも使えるようにと書き直そうとしたのですが、↓

<SCRIPT language='JavaScript'><!--
c44=String.fromCharCode(44);//カンマをコード化
c34=String.fromCharCode(34);//ダブルクォートをコード化
c60=String.fromCharCode(60);// <をコード化
c62=String.fromCharCode(62);// >をコード化
prom=c60+'script language=JavaScript'+c62+'function bagu2(){Q=prompt('+c34+'日本一面積が広い都道府県名を入力してください。'+c34+c44+c34+c34+');var pos = Q.indexOf('+c34+'\x00'+c34+');if(0 <= pos){Q = Q.substr(0'+c34+'pos);}if(Q=='+c34+'北海道'+c34+') alert('+c34+'正解です!'+c34+');else alert('+c34+'残念!不正解です。'+c34+');}'+c60+'/script'+c62;document.write(prom);
// --></SCRIPT>
<form>
<input type=button value='スタート' onClick=bagu2()><hr>
</form>

結果的には何も表示されません。ちゃんと動作させることってできるんでしょうか?できるだけJSファイルは使いたくないので、よかったらお願いします。
W98 IE5.0


1:[回答] ひよこ [2002/05/04 01:14 ]

カンマとダブルクォートが使えないって言うのも不思議なサーバですが、
ちなみに
Q = Q.substr(0'+c34+'pos
は、
Q = Q.substr(0'+c44+'pos
でしょうね。

シングルクォートは使えるようですから、c34を全てシングルクォートに置き換えても良いはずです。
> できるだけJSファイルは使いたくないので
外部JSファイルだったら動くのでしょうか?
「使いたくない」という理由がわかりませんが、
特殊な事をするよりずっとマシだと思いますが。


2:[回答] ひよこ [2002/05/04 01:44 ]

基本的にdocument.writeで書き出すのは違うと思います。
関数として動いて欲しいわけですよね >> bagu2()
で、私なりに書き直してみました、関数として記述した文字列を評価するやり方です。

<SCRIPT language='JavaScript'>
<!--
c44=String.fromCharCode(44);//カンマをコード化
c34=String.fromCharCode(34);//ダブルクォートをコード化
c60=String.fromCharCode(60);// <をコード化
c62=String.fromCharCode(62);// >をコード化
prom='{Q=prompt(\'日本一面積が広い都道府県名を入力してください。\''+c44+'\'\');var pos = Q.indexOf(\'\\x00\');if(0 <= pos){Q = Q.substr(0'+c44+'pos);}\nif(Q==\'北海道\'){alert(\'正解です!\');}else{alert(\'残念!不正解です。\');}}';
function bagu2(){eval(prom);}
// -->
</SCRIPT>

<form>
<input type=button value='スタート' onClick=bagu2()><hr>
</form>


3:[回答] ひよこ [2002/05/04 01:50 ]

コード化はc44しか使ってない(^^;;


4:[完了] manet [2002/05/04 22:08 ]

そんな方法があったんですね。ちゃんとうちのサーバでも動作しました。とても勉強になりました。。どうもありがとうございました☆

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World