アプリ版:「スタンプのみでお礼する」機能のリリースについて

gaiaxはカンマが使えないのですが・・どうしたらいいでしょうか?
教えてください、その部分のみソースを書いておきます。

setTimeout('beginneon()',1000)

ダブルクオーテーションはクオ-テーションのすればいいのは解かったのですが。カンマはどうすればいいか解かりません。
gaiaxはJavaScriptはやりにくいですね。

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

A 回答 (5件)

えー、今更ではありますが、時間が出来たので#3を少し手直ししてみました。


変更箇所はfunction neon()とfunction beginneon()。
document.writeをやめてevalを使ってます。
また、m<message.lengthもそのまま直接記述できるようです。
'<sccript>', '</script>'も不要になったので、変数LT,GTも不要になりました。
たった数十バイトの節約でしかありませんが、「こんな書き方もある」程度の参考にしてください。

-------------------------------------------------------
eval('function neon(){if (n==0){for (m=0; m<message.length; m++)crossref(m).style.color=neonbasecolor;}crossref(n).style.color=neontextcolor;if (n<message.length-1)n++;else{n=0;clearInterval(flashing);setTimeout('+DQuote+'beginneon()'+DQuote+Comma+'1500);return;}}');

eval('function beginneon(){if (document.all || document.getElementById) flashing=setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+');}');
-------------------------------------------------------
(便宜上改行をいれいています)
    • good
    • 0
この回答へのお礼

手前ごとですが、うちの犬が行方不明になり、まだ見つかっていません、アメリカンコッカーです、そのことで、暫くなにも手に付きませんでした、ごめんなさい。
いまは落ち着きました。
mrumesukeさん、ご丁寧にありばとうございます、まだショックから立ち直っていませんが、眠れないのもあり、この勉強に没頭するのも気が晴れて(不純な動機でごめんなさい)ちょうどいいのです。作って、みると夢中になれます。
また再度構築頂きましてありがとうございます、早速試してみたいと思います。
凄く勉強になります、重ねて御礼を申し上げます。
まだまだ、疑問に思うことがありますので、順次質問していこうと思います。
あと、グローバル変数の受け渡しは確認しました、うまく動きます、有難うございます。

お礼日時:2003/11/02 22:51

>例えばmessage="テスト中"とかの内容を変えたい時、グローバル変数とかにして、渡すのでしょうか?



色々な方法が考えられますが、現状のスクリプトを極力残すならグローバル変数でいいでしょう。。

>何処に記述するのですか?

<SCRIPT LANGUAGE='JavaScript' SRC='./test.js></SCRIPT>より前であればどこでも構いません。
グローバル変数はページ内全域(と言っても宣言以降)に亘って有効です。
外部スクリプト、内部スクリプトの区別なくページ内のどこからでも利用できます。
逆に、変数名の競合に気をつける必要があります。


---------------------------------------------------------------
[HTML]
<script ~>
message="テスト中";
</script>
<SCRIPT LANGUAGE='JavaScript' SRC='./test.js></SCRIPT>

[test.js]
HTMLで定義しない変数の定義
if (document.all || ~
  :
関数定義
  :
beginneon();
---------------------------------------------------------------
message以外の変数もHTMLで定義すると、汎用性が上がると思います。
その他工夫の余地はあるでしょう。
その辺はアイデア次第ですので、色々トライしてみてください。
    • good
    • 0

#2は大はずれでした。

(^^;
とりあえず動く形にしてみました。
-------------------------------------------------------
<script language='JavaScript1.2'>DQuote=String.fromCharCode(34);Comma=String.fromCharCode(44);LT=String.fromCharCode(60);GT=String.fromCharCode(62);var message='テスト中';var neonbasecolor='#555555';var neontextcolor='#FF0000';var flashspeed=200;var n=0;if (document.all||document.getElementById){document.write('<font color='+neonbasecolor+'>');for (m=0; m<message.length; m++)document.write('<span id=neonlight'+m+'>'+message.charAt(m)+'</span>');document.write('</font>');}else document.write(message);function crossref(number){var crossobj=document.all? eval('document.all.neonlight'+number) : document.getElementById('neonlight'+number);return crossobj;};neon = LT+'script'+GT+'function neon(){if (n==0){for (m=0; m'+LT+'message.length; m++)crossref(m).style.color=neonbasecolor;}crossref(n).style.color=neontextcolor;if (n'+LT+'message.length-1)n++;else{n=0;clearInterval(flashing);setTimeout('+DQuote+'beginneon()'+DQuote+Comma+'1500);return;}}'+LT+'/script'+GT;beginneon = LT+'script'+GT+'function beginneon(){if (document.all || document.getElementById) flashing=setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+');}'+LT+'/script'+GT;document.write(neon);document.write(beginneon);beginneon();</script>
-------------------------------------------------------
大きく変わった個所は、function neon()とfunction beginneon()です。随分読みづらくなってしまいましたが、頑張って変更前と比較してみてください。一度文字変数neonとbeginneonに格納してからその変数をdocument.writeしています。一気にdocument.writeするより可読性が上がるカナと思ったのですが、大差ないですね。
<script>をLT+'script'+GTにする必要があるのかどうか分かりません。#1の参考サイトに倣ってみました。
その他、構文エラー、並びに、エラーではないが無駄な記述等を若干手直ししています。

突貫工事のため不具合、不都合等があるかもしれません。
不明な点は補足ください。極力対応します。
    • good
    • 0
この回答へのお礼

ありがとうございます、動きを確認しました。
やはり、こんなことになるからJSファイルのほうがいいのでしょうね、ただ、この場合の変数とのやり取りはどうするのですか、例えばmessage="テスト中"とかの内容を変えたい時、グローバル変数とかにして、渡すのでしょうか?何処に記述するのですか?file名test.jsとした場合
<SCRIPT LANGUAGE='JavaScript' SRC='./test.js></SCRIPT>となりますよね。
メッセージはvar message="テスト中"を外にだして・・・。
例えば1ファイルの中に複数のスクリプトがあったとします、その場合は大抵はグローバル変数定義して、そのパラメータを渡しますよね、JavaScriptもできるのでしょうか?1スクリプト内しかグローバル変数は使えないのでしょうか?(考え方間違ってるかもしれないですが、私が1スクリプト内と書いてるのは<SCRIPT LANGUAGE=JavaScript>・・・・・</SCRIPT>のことを便宜上言ってるだけで、世間ではどう呼ばれてるか解かりません)。
この辺りのスクリプトからスクリプトへのパラメータの渡しかたが解かりません、まだ本を見ながら悪戦苦闘しています初心者です、よろしくお願いいたします。
       hidegorou

お礼日時:2003/10/26 22:53

flashingも変数ですよね。


スクリプトの前後を見てみないとはっきり言えませんが、こういうことではないでしょうか。(便宜上改行とコメントを入れておきます)

Comma = String.fromCharCode(44); //カンマ
DQuote=String.fromCharCode(34); //ダブルクォート
flashspeed=1000;
flashing='setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+')';
    • good
    • 0

ご指摘の通りGaiaXでカンマは使えません。


対策としましては、外部にJSファイルを用意するのが最良の方法なのですが、GaiaX内でカンマを使うときは少しトリッキーなことをします。
参考URLに、GaiaXで使えるsetTimeout()を使用したスクリプト(ならびにGaiaXでJavaScriptを使うに当たっての考察)をご紹介します。(スクリプトの作者さんは「ようこそ〇〇さん」のスクリプトを作った方です)

サンプルでは、カンマ、ダブルクォート、<、>、をそれぞれ変数に置き換え、document.writeで目的のスクリプトを出力する、という二段構えになっています。
この手法を応用すればスクリプトをGaiaX用に移植(変換)可能かと思います。(2つ目のURLからリンクされている「スクリプトをGaiaXで利用するためのツール」を使えばその変換作業を自動的に行ってくれるそうです)

ですが、あまり複雑なスクリプトは移植に向いていません。冒頭にも書いたとおり、できることなら外部にJSファイルを置きたいところです。

参考URL:http://homepage2.nifty.com/chifu/gaiax/script/ma …

この回答への補足

mrumesuke様、有難うございます。
再々申し訳ありません、まだ駆け出しな者なので、お手数をお掛けしています。
変更しましたが、うまく行きません。[ソース]を早く載せればよかったです、スミマセン。
まお、教えて頂いたURLの下の方で、自動変換させましたら、セミコロンとかが省略されてしまって、全然動きませんでした。

このままだと、メッセージが「灰色(555555)」になって止まっています、flashing命令にエラーがあるのでしょうか、eval関数の使い方が間違ってるのでしょうか、私自身、よく解かっていないのですけど引数なども変かもしれないです。

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

<H2><I>
<script language='JavaScript1.2'>DQuote=String.fromCharCode(34);Conma=String.fromCharCode(44);var message='来てくれて、ありがとう!';var neonbasecolor='555555';var neontextcolor='FF0000';var flashspeed=200;var n=0;if (document.all||document.getElementById){;document.write('<font color='+neonbasecolor+'>');for (m=0;m<message.length;m++)document.write('<span id=neonlight'+m+'>'+message.charAt(m)+'</span>');document.write('</font>');};else
document.write(message);function crossref(number){;var crossobj=document.all? eval('document.all.neonlight'+number) : document.getElementById('neonlight'+number);return crossobj;};function neon(){;if (n==0){;for (m=0;m<message.length;m++)crossref(m).style.color=neonbasecolor;};crossref(n).style.color=neontextcolor;if (n<message.length-1)n++;else{;n=0;clearInterval(flashing);setTimeout('beginneon()'+Conma+1500);return;};};function beginneon(){;if (document.all||document.getElementById);flashing='setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+')';};beginneon()</script>
</I></h2>

補足日時:2003/10/23 09:21
    • good
    • 0
この回答へのお礼

ありがとうございました、一部分はConma関数に変更したら動きました、二箇所あり、他の一箇所を変更すると動きません、そこの記述は
flashing=setInterval('neon()',flashspeed)
このところを
flashing=setInterval('neon()'+Conma+flashspeed)
としました、flashspeedは変数なので書き方が違うのでしょうか?

お礼日時:2003/10/22 17:09

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