No.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+');}');
-------------------------------------------------------
(便宜上改行をいれいています)
手前ごとですが、うちの犬が行方不明になり、まだ見つかっていません、アメリカンコッカーです、そのことで、暫くなにも手に付きませんでした、ごめんなさい。
いまは落ち着きました。
mrumesukeさん、ご丁寧にありばとうございます、まだショックから立ち直っていませんが、眠れないのもあり、この勉強に没頭するのも気が晴れて(不純な動機でごめんなさい)ちょうどいいのです。作って、みると夢中になれます。
また再度構築頂きましてありがとうございます、早速試してみたいと思います。
凄く勉強になります、重ねて御礼を申し上げます。
まだまだ、疑問に思うことがありますので、順次質問していこうと思います。
あと、グローバル変数の受け渡しは確認しました、うまく動きます、有難うございます。
No.4
- 回答日時:
>例えば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で定義すると、汎用性が上がると思います。
その他工夫の余地はあるでしょう。
その辺はアイデア次第ですので、色々トライしてみてください。
No.3
- 回答日時:
#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の参考サイトに倣ってみました。
その他、構文エラー、並びに、エラーではないが無駄な記述等を若干手直ししています。
突貫工事のため不具合、不都合等があるかもしれません。
不明な点は補足ください。極力対応します。
ありがとうございます、動きを確認しました。
やはり、こんなことになるからJSファイルのほうがいいのでしょうね、ただ、この場合の変数とのやり取りはどうするのですか、例えばmessage="テスト中"とかの内容を変えたい時、グローバル変数とかにして、渡すのでしょうか?何処に記述するのですか?file名test.jsとした場合
<SCRIPT LANGUAGE='JavaScript' SRC='./test.js></SCRIPT>となりますよね。
メッセージはvar message="テスト中"を外にだして・・・。
例えば1ファイルの中に複数のスクリプトがあったとします、その場合は大抵はグローバル変数定義して、そのパラメータを渡しますよね、JavaScriptもできるのでしょうか?1スクリプト内しかグローバル変数は使えないのでしょうか?(考え方間違ってるかもしれないですが、私が1スクリプト内と書いてるのは<SCRIPT LANGUAGE=JavaScript>・・・・・</SCRIPT>のことを便宜上言ってるだけで、世間ではどう呼ばれてるか解かりません)。
この辺りのスクリプトからスクリプトへのパラメータの渡しかたが解かりません、まだ本を見ながら悪戦苦闘しています初心者です、よろしくお願いいたします。
hidegorou
No.2
- 回答日時:
flashingも変数ですよね。
スクリプトの前後を見てみないとはっきり言えませんが、こういうことではないでしょうか。(便宜上改行とコメントを入れておきます)
Comma = String.fromCharCode(44); //カンマ
DQuote=String.fromCharCode(34); //ダブルクォート
flashspeed=1000;
flashing='setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+')';
No.1
- 回答日時:
ご指摘の通り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>
ありがとうございました、一部分はConma関数に変更したら動きました、二箇所あり、他の一箇所を変更すると動きません、そこの記述は
flashing=setInterval('neon()',flashspeed)
このところを
flashing=setInterval('neon()'+Conma+flashspeed)
としました、flashspeedは変数なので書き方が違うのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Kotlinの、「, ”カンマ”」「."ドット"」「: コロン」の使い分けについて知りたい 1 2022/11/19 15:37
- 英語 As shown in Fig. 3 and Fig. 5, PRF group showed mo 5 2022/03/23 06:35
- Excel(エクセル) 数字にカンマを入れる方法 2 2022/04/12 11:52
- 英語 英語のカンマについて教えて欲しいです。 英作文についてです。 例えばお題が 100円ショップを利用す 3 2022/12/31 18:03
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- その他(教育・科学・学問) 「、」を「,」(カンマ)で綴っている文献って、何故そうしているんですか? 7 2022/11/30 19:59
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2022/12/08 15:45
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- 英語 but と however 3 2022/08/27 20:50
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptで変数を組み込みたい
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
フォーカス移動抑止について
-
スマホ上で、左右スワイプで次...
-
SQLのWHEREで全てを質問する方法
-
JavaScriptでiframeの内容を「...
-
SCRIPT5007: 未定義または NULL...
-
別ファイルのfunctionの読み込み方
-
複数のJavascriptを1つのscrip...
-
base64encodeでの文字化けについて
-
JavaScript でキーを送る
-
javascriptからウィンドウを開...
-
getElementsByNameで要素が取得...
-
Java ScriptでIPによるアクセス...
-
外部ファイル名を変数で指定で...
-
特定のウィンドウ名を持つウィ...
-
jQuery が動作しません。
-
HP上のPDFファイルを保存禁止...
-
window.open オートコンプリー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1から100までの平方根を表示す...
-
javascriptで変数を組み込みたい
-
document.getElementById
-
ランダム音声と正解・不正解の表示
-
JavaScriptの入れ子
-
IEでiframe内のcookieを保持
-
動的生成したscriptタグが実行...
-
¥マークの検索について
-
history.back スクリプトオフ...
-
外部jsからdocument.writeする...
-
javascriptでの大文字小文字の区別
-
CGIフォーム一定時間過ぎる...
-
明日の日にちを表示するときは
-
ブラウザのアドレス欄に
-
HPビルダーで『最終更新日時』...
-
ブログ上で複数のjavaスクリプ...
-
書いたクッキーを読み出してメ...
-
ホームページ内に直接書込がしたい
-
JSによるリンク先の値の取得
-
カウントダウンとカウントアッ...
おすすめ情報