• ベストアンサー

gaiaxでJavascriptで記述した場合にカンマが消えてしまいます。

gaiaxはカンマが使えないのですが・・どうしたらいいでしょうか? 教えてください、その部分のみソースを書いておきます。 setTimeout('beginneon()',1000) ダブルクオーテーションはクオ-テーションのすればいいのは解かったのですが。カンマはどうすればいいか解かりません。 gaiaxはJavaScriptはやりにくいですね。 よしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答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+');}'); ------------------------------------------------------- (便宜上改行をいれいています)

hidegorou
質問者

お礼

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

その他の回答 (4)

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答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で定義すると、汎用性が上がると思います。 その他工夫の余地はあるでしょう。 その辺はアイデア次第ですので、色々トライしてみてください。

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答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の参考サイトに倣ってみました。 その他、構文エラー、並びに、エラーではないが無駄な記述等を若干手直ししています。 突貫工事のため不具合、不都合等があるかもしれません。 不明な点は補足ください。極力対応します。

hidegorou
質問者

お礼

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

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

flashingも変数ですよね。 スクリプトの前後を見てみないとはっきり言えませんが、こういうことではないでしょうか。(便宜上改行とコメントを入れておきます) Comma = String.fromCharCode(44); //カンマ DQuote=String.fromCharCode(34); //ダブルクォート flashspeed=1000; flashing='setInterval('+DQuote+'neon()'+DQuote+Comma+flashspeed+')';

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答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/marquee.html,http://homepage2.nifty.com/chifu/gaiax/script/faivor.html
hidegorou
質問者

お礼

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

hidegorou
質問者

補足

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>

関連するQ&A

  • コンマとクォーテーションの使い方

    英語で論文を書いているのですが、コンマと(ダブル)クォーテーションの使い方がよく分かりません。 例えば、クォーテーションとピリオドならば、 ..."the sun." となると思うのですが、コンマも同様に ...with "the sun," ... ...such as "rain," "mist," "fog," and "snow," ... などのようになるのでしょうか。 wikipediaの英語版では、コンマをアメリカンイングリッシュではクォーテーションの中に、ブリティッシュでは外に、と記述がありました。 統一するならば、どちらを使ってもいいものなのでしょうか。 お願いします。

  • カンマとコンマの位置について。

    I felt very happy when they said, "thank you." という場合、saidのあとの, カンマは必ず必要なのでしょうか。 また、thank youのあとの. コンマはダブルコーテーションマーク""の後ろでは いけないのでしょうか。 どなたかお分かりの方がいらっしゃいましたら教えて下さいますようよろしくお願いいたします。

  • C#カンマで区切る

    文字列3種類 a,bc a,"b,c" "a,b",c 単純にカンマでsplitしてもだめですし、ダブルクォーテーションも文字列にカンマがある時だけついて来ます。 カンマで二つの文字列に区切るにはどうすれば良いでしょうか。お願いします。なおCSVファイルではなく、ただの文字列です。

  • HTMLの記述で、3重の引用は?

    ”(ダブルクォーテーション)の中には、’(シングルクォーテーション)でくくれば良いのですが、さらにその中に引用する場合は使える引用符はありますでしょうか? Javascriptの記述の際に、必要になってしまったのですが・・

  • PHPでjavascriptを書き出すときのクォーテーションの使い方

    PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、 ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか? 例 $a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>"; *test()はjavascriptの関数とします。 このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。

    • ベストアンサー
    • PHP
  • エクセルのカンマ区切りのCSV出力

    エクセルのカンマ区切りのCSV出力について質問します。 CSVファイルとしてカンマ区切りで出力したいのですが、さらに各項目にダブルコーテーション(")をつけて出力したいのです。 例) 通常のCSV 01,02,03 やりたいCSV出力 "01","02","03" ご存知の方がいらっしゃいましたら回答お願いします。

  • ダブルクォーテーションカンマ区切りのcsv形式ファイルへの変換方法

    Excelファイルをダブルクォーテーションカンマ区切りのcsv形式ファイルへ変換する方法を教えてください。 "●●","○"○,"◆◆"

  • perlでcsvファイルを読む(ダブルコーテーション内カンマを無視したい)

    perlでCSVファイルを読み込むスクリプトを作っています。 以下のようなCSVファイルがあります。 ■CSVファイル 東京,よろしくお願いします。 大阪,はじめまして 九州,"5,000円でお願いします" カンマで区切り、以下のようにすると、"5,000円"の部分が2つに分かれてしまいます。 ($data1,$data2) = split(/,/,$all_data) 前後にダブルコーテーションがあった場合、中のカンマで区切らないような良い方法はないでしょうか? 環境: Perl 5.8.5

    • ベストアンサー
    • Perl
  • 正規表現の置換で、カンマで区切られた語句を""と改行で分ける方法

    正規表現による置換についてお教えください。 Unixのコマンドで置換するときに、sed コマンドを使うと思います。 今、プログラムのソースコードの中に含まれている語句を取得するために、色々いじろうと思っています。 私が最もお聞きしたいのは、正規表現の書き方であることを、まずご理解ください。 ソースコードの中に、 string headline="語句1,語句2,・・・,語句n-1,語句n"; というように、 string headline= で始まっていて、 その後に " "(ダブルクォーテーションの組)で囲まれた部分が1箇所あり、 その部分に、カンマ(,)で区切られた語句がいくつもあるような行があったとき、 その " "の部分を、 "語句1", "語句2", ・・・ "語句n-1", "語句n" のように置換したいのです。 つまり、語句一つ一つをダブルクォーテーションで包んで、1行に語句が1つになるようにしたいのです。 厳密に言えば、stringとheadlineの間などに、タブや空白がいくつあるかわからないという問題なども考える必要があるかもしれません。 とりあえず私が考えたのは、 s/\(string headline="\)\([^,]\)+,\(";\)/\1\2",改行"\3/g です。 s/置換前の文字列のパターン/置換後の文字列のパターン/g となっています。 置換前のパターンで \( \) で囲まれている部分は、置換後のほうで、\1のように参照できます。 ■■でも、私の書いたものって、語句が繰り返し出現することに対応できていないように思われます。■■ 実際に、置換に改行を含めるには、正規表現をファイルの中に書いて、sedの-fオプションで読み込ませることになると思います。 string headline=" " という形をしていないものは、たとえ、" " の中がカンマで区切られていてもそれを分けません。

  • 「"」(ダブルクォーテーション)で囲まれた「,」をキャンセルしてcsvの値を抽出するには

    111,"あいうえお",,"さしす,せそ" のテキストファイルを value[0] = 111 value[1] = あいうえお value[2] = value[3] = さしす,せそ いう形に配列に入れたいと思っています。見てもらえばわかると思いますが、数字には「"」(ダブルクォーテーション)が付かなくて、「"」の中に入っている「,」(カンマ)は区切り記号とはみなされず値として取り込んでいます。 splitの正規表現など使えないか苦悩しています。いまだ解決方法見つけられず。 テキストファイルの「"」(ダブルクォーテーション)有り/無しや順番などは都度変更されます。 カンマ区切りで、「"」(ダブルクォーテーション)で囲まれた部分は外して値を取り出すにはどうしたらいいのでしょう? ご存知の方、ご教授ください。

    • ベストアンサー
    • PHP

専門家に質問してみよう