ページ 11

スレ立てるまでもない質問

Posted: 2011年1月07日(金) 20:47
by Ciel
こちらはスレ立てるまでもない質問のトピックです。

しょうもない疑問で恥ずかしくて聞けない質問などが、ありましたらこちらのトピックに投稿して下さい。

例:jQueryの最新バージョンって今なんですか?
  その他、恥ずかしくてなかなか聞けなかった質問など。

※基本的に1質問に付き1スレッド作成していただいて構いません。まあその辺は個人の判断で結構です。

Re: スレ立てるまでもない質問

Posted: 2011年1月07日(金) 21:01
by Ciel
さっそく質問w

下記のソースにある、括弧の後ろにあるセミコロンなんですが必要なんでしょうか?
ネットで見る限りはあったりなかったりするので、正しい方を知っておきたいと思いまして。
動作自体はあってもなくても動くようです。

コード:


$(function(){
$("div").click(function(){
 alert("hello");
});←ここのセミコロンって必要?
});

よろしくお願いします。

Re: スレ立てるまでもない質問

Posted: 2011年1月07日(金) 22:55
by h2so5
Javascriptの構文チェッカーではセミコロンが無いとエラーが出るので、
規格上は必要ではないでしょうか。

http://www.javascriptlint.com/online_lint.php

Re: スレ立てるまでもない質問

Posted: 2011年1月07日(金) 23:19
by Ciel
>>h2so5さん
ありがとうございます!そしてコミュ参加ありがとうございます!

確かに警告が出ますね。やっぱり必要のようですね。

こんな便利なサイトあったんですね!
今後も使わせていただきます。

どうもありがとうございました!

Re: スレ立てるまでもない質問

Posted: 2011年1月08日(土) 02:54
by Justy
 一応 click(...);の ';'なわけですが、Javascriptの文法としては文末の ';'を省略することができ、
自動的に適当に補ってくれますので要らないと言えば要りません。

 しかし、意図しないところ副作用を起こすことがあるのでつけることが推奨されています。
http://cou929.nu/data/google_javascript ... guide/#id8

Re: スレ立てるまでもない質問

Posted: 2011年1月08日(土) 08:05
by Ciel
Justyさん、ありがとうございます!

そういえばよく考えてみるとclick(...)のセミコロンになりますねw
括弧を閉じた後のセミコロンみたいな変な認識しちゃってました><

文法としては省略可能なんですね~。
でもリンク先のような副作用が起こると面倒なので、常につけるようにします!

ありがとうございました!

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 14:42
by MoNoQLoREATOR
質問です。
JavaScriptでテキストファイル内容を読み込んで表示させようとしたのですが、表示されません。
どこかまちがっているのでしょうか。

コード:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta http-equiv="Content-Language" content="ja" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>

<script language="JavaScript"><!--

var fileStr;
fileStr.OpenTextFile("test.txt", 1, false);//ファイル読み込み
document.write(fileStr);

--></script>

</body></html>
普通に文章を表示させることはできたので、JavaScriptは機能しているはずです。だからファイル読み込みの部分で落ちているのだと思うのですが・・・。

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 16:49
by Ciel
まず動かないですね。
インスタンスも作っていないのに動くはずがありません。

あまり時間がないので以下のURLを熟読の上、一度やってみてください。
もし何かエラー等が出るようであれば、詳細にエラーの内容を記載していただき、再度質問して下さい。
出来る限りのサポートは致します。
http://d.hatena.ne.jp/nacookan/20080221/1203607060

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 16:49
by Ciel
まず動かないですね。
インスタンスも作っていないのに動くはずがありません。

あまり時間がないので以下のURLを熟読の上、一度やってみてください。
もし何かエラー等が出るようであれば、詳細にエラーの内容を記載していただき、再度質問して下さい。
出来る限りのサポートは致します。
http://d.hatena.ne.jp/nacookan/20080221/1203607060

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 20:23
by MoNoQLoREATOR
返信ありがとうございます。
とりあえずサンプル通りに改変してみたのですが、エラーが出ました。

コード:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta http-equiv="Content-Language" content="ja" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>

<script language="JavaScript"><!--

var fso = new ActiveXObject('Scripting.FileSystemObject');
var stream = fso.OpenTextFile('test.txt', 1, false, -2);
var text = stream.ReadAll();
stream.Close();
document.write(text);

--></script>

</body></html>
エラー:
Uncaught ReferenceError: ActiveXObject is not defined

ActiveXObjectが見つからないということは、私のパソコンにインストールされていないということなのでしょうか。
それともブラウザの設定が原因なのでしょうか。
ちなみに私が使っているブラウザはGoogleChromeです。

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 20:52
by kimuchi
ActiveXObject()はたしか「JScript」という「Javascript」互換の言語で
MSIE専用だったような気がします。
何をされたいのかはよく分からないですが、サーバー側でPHPなどを使いたくない理由があるのでしょうか?
(それとも何かのテストでしょうか。)
ファイル管理ならサーバー側のアプリに任せるほうがセキュリティ的にも良いと思いますが・・・

Re: スレ立てるまでもない質問

Posted: 2011年3月21日(月) 22:53
by Ciel
たぶん、IEじゃないと動きませんよ。

基本javascriptではユーザのローカルファイルにはアクセスできませんので、
PHP等を使って、読み書きするしかありません。

とりあえずそれでも良いのであれば、IEでやった結果をまた書き込んでいただければアドバイスいたします。
が、クロスブラウザに対応するのが一番良いと思いますのでお勧めしません。

素直にPHPでサラッっとやることをおススメいたします^^

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 17:33
by MoNoQLoREATOR
何がしたいのかというと、ユーザーが「ある日時」を設定し、「ある日時」までのカウントダウンを行いたいのです。

途中でユーザーがブラウザを閉じてしまう可能性があるので、とりあえず「ある日時」をサーバーに記憶しておきます。
カウントダウンはJavaScriptを使う方法しか知らないので、JavaScriptでデータを読み込む必要があるのです。

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 17:40
by MoNoQLoREATOR
CGIを使って自分自身を書き換える方法もありますが、ユーザーは沢山いるわけで、したがってユーザーの数だけそのページのファイルが必要になってしまいます。短いファイルなら問題ないのですが、長いファイルだと、サーバーが圧迫されてしまうのでやりたくないです。

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 19:21
by kimuchi
CGIを使って自分自身を書き換えずとも、
上のスクリプトのようにテキストファイルに保存して読み込めば良いのではないでしょうか。

ユーザー、という言葉が入るのを見ると、実用のスクリプトということですね。
javascriptのリクエストはあまり信用できたものではありません。
ソースの参照から保存したテキストファイルがばれてしまいますし、不正なデータが混入する可能性もあります。

以上の点でCGI(PHP等)を用いたサーバーサイドのプログラムにしたほうが良いと思います。

ついでですが、
ユーザーは沢山いるわけで、したがってユーザーの数だけそのページのファイルが必要になってしまいます。短いファイルなら問題ないのですが、長いファイルだと、サーバーが圧迫されてしまうのでやりたくないです。
この点でデータベースを利用されるのはいかがでしょうか?
データの登録や、更新、削除に最適化しており、テキストファイルを扱うよりも
管理が簡単になると思います。
使えない環境でしたら申し訳ありません。

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 19:31
by Ciel
クッキー使えばいけるんじゃないでしょうか?

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 20:36
by MoNoQLoREATOR
残り1時間29分54秒
残り1時間29分53秒
残り1時間29分52秒

という風に、リアルタイムで刻々とカウントダウンされるようにしたいのですが、CGIだけで可能なのですか?一秒ごとに情報を更新して残り時間を書き換えるプログラムを想定しているのですが。

私はCGI系はPHPしか詳しくないのですが、
私の記憶が正しければJavaScript内部でPHPを使う事はできませんので、JavaScriptの関数を1秒ごとに呼ぶことができたとしてもその内部でPHPを使ってファイルを読み込むことはできません。


※ユーザー側に保存せず、サーバー側に保存する方向でお願いします

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 22:19
by Ciel
javascriptでクッキーを使ったコードを書いておきます。

あまり詳しくないので、クロスブラウザの対応は行っていません。
簡単にテストしてみたらIEでしか動きませんでした。

コード:

var year,month,day,hour,minute,second;

data = new Date();

year=data.getYear();
month=data.getMonth()+1
day=data.getDate();
hour=data.getHours();
minute=data.getMinutes();
second=data.getSeconds();

document.cookie="year1="+year+";expires=Tue, 1-Jan-2030 00:00:00 GMT;"

var tmpchar=document.cookie;

var ar=new Array();
ar=tmpchar.match(/^year1=([0-9]+?);/);

alert(ar[1]);
適当なHTMLファイル作って、scriptタグで囲んでページ開いてみてください。
恐らく、現在の年数がポップアップで出ると思います。

ユーザにその指定した日時を入力させて、
このようにクッキーに書き込ませておけば、その情報を記録しておけます。
ユーザがページを閉じても、そのクッキーを毎回読めば問題解決ですよね。

時間がないので、詳しい説明は行いませんが、一度ググって色々クッキーの扱い方を調べてみて、
わからなければ、また質問して下さい。

以上です。

Re: スレ立てるまでもない質問

Posted: 2011年3月23日(水) 22:56
by kimuchi
私はCGI系はPHPしか詳しくないのですが、
私の記憶が正しければJavaScript内部でPHPを使う事はできませんので、JavaScriptの関数を1秒ごとに呼ぶことができたとしてもその内部でPHPを使ってファイルを読み込むことはできません。
Ajaxという技術を使えば可能です。(検索すれば沢山ヒットします。)
非同期通信が可能で、実際にブラウザゲームにも使用される技術の一つでもあるようです。

ところで、日記の方を拝見させていただきましたがかなりの頻度でテキストファイルにアクセスする予定のようですね。
過度なファイルアクセスをするとそのファイルが壊れてしまう可能性があります。
アクセス速度も考えるとやはりデータベースを使ったほうが良さそうですが・・・

ひとつ質問なんですが、
サーバーはレンタルのものでしょうか?