ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、

<img src="./counter.cgi">

と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか?

以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。

■cgiプログラム(test.cgi)
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "TEST TEXT";
exit 0;

■htmlファイル
<html><head></head>
<body>
<br>
<hr>
<object data="./test.cgi" type="text/plain"></object>
<hr>
</body>
</html>

perlもhtmlも独学で学んだ基礎レベルだと自分で思っています。
どなたか突破口となるヒントをお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

cgi側でjavascriptのコードを返すという方法があります。



■cgiプログラム(test.cgi)
print "Content-type: text/plain\n\n";
print "javascriptのコード";

■htmlファイル
<script type="text/javascript" src="http://サクラ/test.cgi">

テキストニュースも大抵この方式でしょう。
いわいるブログペットも、画像かIFrameかJavascriptで出来ているはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
この方法で上手くいきました。

cgiプログラムは、htmlページ内の所定の<div>の中身をinnerHTMLで書き換えるjavascriptの関数を吐き出すように作って、htmlページがonloadでその関数を呼び出すようにしました。

仰るとおり、Googleのアドセンスやニュースもこんな感じなんでしょうね。

助かりました。
ありがとうございました。

お礼日時:2009/03/04 14:31

後出し条件によって質問の全体像が見え辛くなった気がします。



まとめ直してもらえませんか?

登場サーバーが全部で何台か、それぞれでの 自作 HTML/CGI や SSI の可否は特に重要です。

この回答への補足

混乱を生じさせてすみませんでした。
解決はしましたが、どんな全体像だったか記しておきます。

登場するサーバーは3つです。

(a) amebloサーバー
  友人がブログを書いているサーバーです。

(b) fc2サーバー
  ボクがBlogを書いているサーバーです。
  ブログテンプレートによりhtmlの編集やcssの編集が可能です。
  SSIに関しては設定できません。

(c) サクラインターネットのレンタルサーバー
  cgiの置き場所です。perlで書いてます。
  SSIも使えるようです。

どういうことをやりたかったかと言うと、
(1) 上記(a)から友人ブログのRSSを(c)に設置したcgiで取得。
(2) cgiは取得したRSSをパースなどして最新記事リストをテキストで吐き出す(結果的にこれをjavascriptコードとして吐き出した)。
(3) 上記(b)から(c)のcgiを叩いて、(b)のfc2ブログに(a)の友人Blogの最新記事リストを表示させたい。

最終的には(2)をjavascript形式で吐き出すようにcgiを書き、fc2ブログからそのjavascriptを呼んで、onloadをトリガーとしてinnerHTMLで所定の<div>内にamebloの最新記事を並べることに成功しました。

ブログパーツか何か使えば良かったかもしれませんが、デザイン性とか自由度の高いほうが良かったので、あえて自分で組みたかった次第です。

全体像は以上ですが、分かっていただけたでしょうか?

ここに質問してホント助かりました。
ありがとうございました。

補足日時:2009/03/04 14:48
    • good
    • 0

それを実現する事が、Ajax誕生の目的と言っても過言では無い気がしますね。



JavaScript を使う事になりますが、prototype.js の Ajax.Updater() を使えばそれほどムズく無いのでは?

参考URL:http://javascriptist.net/ref_prototype/ajax.upda …

この回答への補足

ん~、回答のお礼を書いた後に、また書きこんでます。

どうやら、Ajax.Updater()で指定するurlは、ドメインから指定できないみたいですね。
HTML自体はfc2サーバーにあり、Ajax.Updater()で指定するurlはボクのサクラインターネットのサーバーにあるので、どうしてもドメインを指定しなくてはいけません。

せっかく上手くいきそうなので、もう少しAjax.Updater()で粘りたいのですが、urlにドメインを指定するよい方法はないでしょうか?
#urlのドメインを跨いでAjax.Updater()を使う方法はないでしょうか?

補足日時:2009/03/01 22:39
    • good
    • 0
この回答へのお礼

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

教えていただいた参考URLで、Ajax.Updater()のサンプルを試してみました。
無事に思い描く動きをしたのでこの手法で実際に組み込んでみたいと思います。
#参考URLのprototype.jsへのリンクが切れていたので、以下からダウンロードしました。
http://prototypejs.org/assets/2008/9/29/prototyp …

難点は、javascriptなのでケータイに対応できない点です。
ケータイのブラウザで動的にテキストを出し分けることができる方法ってあるんでしょうか?

何はともあれ、すっきりして嬉しいです。
実際の作り込みは今からですが、ワクワクしてきました。
ありがとうございました。

お礼日時:2009/03/01 19:33

HTMLの規格上は、「ページ外から取得した文字列をそのまま本文中に埋め込む」方法はありません。

どうしてもテキストを埋め込みたいのでしたら、SSI の使用を検討してください。
SSIとは、WWWサーバ側でスクリプトを実行し、その文字列を埋め込んだHTMLファイルを配信するものです。
<!--#exec cgi="./test.cgi" -->
といった記述をしておけば、その部分がスクリプトの出力するデータに置き換えられます。
ブラウザからは文字列置き換え後のデータを、普通のHTMLファイルとして受け取りますので、HTMLのタグなども自由に入れられます。

ただし、SSIを使用するためには、WWWサーバ側の設定などが必要ですので、どこでも使えるわけではありません。
くわしくは
http://www.tohoho-web.com/wwwssi.htm
http://www.scollabo.com/banban/ssi/index.html
などをご覧ください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

fc2ブログのhtmlテンプレートの中で、動的にテキストを表示したいと考えています。
全体のhtmlの吐き出しはfc2サーバーが行いますので、SSIの設定などはこちらは手が出せないとう事情があります。

ブログのテンプレートに埋め込むという用途が説明不足でした。
すみませんでした。

Googleのアドセンスが動的にテキスト広告を出せているんだから、自分のやりたいことは出来るのではないかと漠然と思っています。
perl、cgiという手段で実現できるかどうかが心配ですが。

お礼日時:2009/03/01 18:46

<object>ではなく <iframe>を使えば上手くいくんじゃないでしょうか。


自分では試していません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

最初にカウンターの例を出したのがまずかったかもしれませんが、cgiがはき出す文字列の長さはその都度変わるプログラムにしたいため、スペースが固定されてしまうiframeでは、はき出す文字列が長い場合にスクロールバーが出てしまうでしょうから、デザイン的に採用できない事情があります。

お礼日時:2009/02/28 06:52

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTML上(javascript)からCGIを実行する方法

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTMLファイルの一部にcgi処理結果を表示させたいものです。

そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの
実行結果を表示する事は出来ないのでしょうか。
よろしくお願い致します。

※下例のプログラムではcgi結果は表示されませんでした・・・。

---<index.htm>----------------------------------------
<HTML>
<BODY>
<SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT>
</BODY>
</HTML>

---<test.cgi>----------------------------------------
#!/usr/bin/perl

print "test"

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTML...続きを読む

Aベストアンサー

「Google AdSense」のjavascriptでは#1さんの回答にもありますがiframeを使用するような仕掛けになっているようです。
・javascriptでiframeを展開。
・iframeのsrcでcgiを指定。

>外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという間接的な仕組みを設ければ可能になる
そういう仕組みも可能です。
また、直接的に<script type="text/javascript" src="xxxx.cgi"></script>
こういう書き方も可能です。
※xxxx.cgiでは処理結果をjavascriptのコードとして
print "Content-Type: application/x-javascript\n\n";
print "document.write('xxxx');";
みたいにして吐き出す必要があります。

QCGIの中で出力するテキスト内容をhtml側で表示する方法。

htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。
今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。

1.CGIスクリプト(Perlで記述)を用意... test.cgi
-----------------------------------------------------
#!/usr/bin/perl
print "Content-type:text/html; charset=shift_jis\n\n";
print <<__EOD;
<html lang="ja">
<head>
<title>TITLE</title>
</head>
<div align=center>
<a>テスト1</a><br>
<a>テスト2</a><br>
</div><br>
</body></html>
__EOD

open(OUT,">a.tmp") || die "$!";
print OUT "aaaaa\n";
close(OUT);
-----------------------------------------------------


2.htmlを用意 ... test.html
-----------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>HTML TEST</title>
</head>
<body>
<script src="http://xxx/CGI/test.cgi"></script>
</body>
</html>
-----------------------------------------------------

上記のとき、動作として、

◆ブラウザからCGIのパス(http://svr1/CGI/test.cgi)に直接アクセスした場合、
「テスト1」「テスト2」の文字が表示され、a.tmpファイルも作成されている。

◆ブラウザからhtml(http://svr1/test.html)にアクセスした場合、ブラウザ画面は何も表示されない
(真っ白となる)が、a.tmpファイルは作成されている。

のようになってしまいます。

後者のようにして、htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。

以上、よろしくお願い致します。

htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。
今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。

1.CGIスクリプト(Perlで記述)を用意... test.cgi
-----------------------------------------------------
#!/usr/bin/perl
print "Content-type:text/html; charset=shift_jis\n\n";
print <<__EOD;
<html lang="ja">
<head>
<title>TITLE</title>
</head>...続きを読む

Aベストアンサー

<script src="http://xxx/CGI/test.cgi"></script>としているなら
perlで出力するヘッダーは
print "Content-Type: application/x-javascript\n\n";
としないとならないでしょう。

perlではjavaScript構文を出力します。

例えばhtmlでは・・
<BODY>
<SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript">
<!--
document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"test.cgi\"></SCRIPT>");
// -->
</SCRIPT>
</BODY>

として、perlでは

#!/usr/bin/perl
print "Content-Type: application/x-javascript\n\n";
print "document.write('<A HREF=\"other.html\">てすと</A>');";

てな感じです。

<script src="http://xxx/CGI/test.cgi"></script>としているなら
perlで出力するヘッダーは
print "Content-Type: application/x-javascript\n\n";
としないとならないでしょう。

perlではjavaScript構文を出力します。

例えばhtmlでは・・
<BODY>
<SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript">
<!--
document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"test.cgi\"></SCRIPT>");
// -->
</SCRIPT>
</BODY>

として、perlでは

#!/usr/bin/perl
print "Content-Type: appli...続きを読む

Qjavascriptの中で、perlのコマンドを実行できないか。

javascriptの中で、perlのコマンドを実行できないか。

java:クライアント側の処理。
perl(cgi):サーバ側の処理。
なので、愚問かもしれないのですが、

↓======================================
<script language="JavaScript">
<!--
function aaa(){

 :

EOM

(この間に、perlの処理)

print <<EOM;



}
// -->
</script>
↑======================================

と言った感じで、javascriptのfuncitonの中で、
perlを使って、データベースへの操作をしたいのですが、
やはり、無理でしょうか。
あるいは、代案などあればご教授願えませんでしょうか。
よろしくお願いします。

Aベストアンサー

Sjaxを使う手もアリかと思います
昔作った実験コードです。
hello.cgiは自分で適当に作ってください
また、hello.cgiはべつにCGIでなくてもPHPでもOKです。
ロード時に実行するパターンとボタンクリックのイベント駆動のパターンを入れときました。
なんかずっと前にもこんな質問があったような気が・・・
--------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>サンプル</title>
<script language="javascript">
<!--
// -------------------------------------
// -------------------------------------
function fCall(){
var xObj = createHTTPRequest();
var fName = "http://www.hogehoge.jp/hello.cgi";
var oText = document.getElementById("Disp01");
xObj.open("GET", fName, false);
xObj.send(null);
oText.innerHTML = xObj.responseText;
}

function fCall2(){
var xObj = createHTTPRequest();
var fName = "http://www.hogehoge.jp/hello.cgi";
xObj.open("GET", fName, false);
xObj.send(null);
var sSTR = xObj.responseText;
document.write(sSTR);
}
// -------------------------------------
function createHTTPRequest(){
if(window.ActiveXObject && !window.XMLHttpRequest){
try{
return (new ActiveXObject('Msxml2.XMLHTTP'));
}catch (e) {}
try{
retrurn (new ActiveXObject('Microsoft.XMLHTTP'));
}catch (e) {}
return (null);
}else if(window.XMLHttpRequest){
return (new XMLHttpRequest);
}else{
return null;
}
}
//-->
</script>

</head>
<body>
<p>サンプル</p>
<p id="Disp01"> </p>
<p><input type="button" value="ボタン" name="B3" onClick="fCall()"></p>
<script language="javascript">
<!--
fCall2();
//-->
</script>
</body>
</html>
--------------------------------------------------------

Sjaxを使う手もアリかと思います
昔作った実験コードです。
hello.cgiは自分で適当に作ってください
また、hello.cgiはべつにCGIでなくてもPHPでもOKです。
ロード時に実行するパターンとボタンクリックのイベント駆動のパターンを入れときました。
なんかずっと前にもこんな質問があったような気が・・・
--------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<tit...続きを読む

Qhtmlファイルへのcgiの組み込みについて

gifファイルなどはcgiで<img>タグによってhtmlファイルに埋め込むことはできますが,cgiから出力されるtxtをhtmlに埋め込むことはできますか?
すべてをcgiでやれば済むことですが,もし方法があれば教えてください.
フレームを使用すればできると思いますが,できたら使用しない方法をお願いします.

Aベストアンサー

> html側ではperlで作成されたcgiではなくjavascriptで作成されたcgiですよね?
Perlで作られたCGIです。(一般にCGIがそうであるように、スクリプトの言語はPerlでなくてもかまいませんが。)

>perlとjavascriptが混在しているように見える
これはPerlです。
サーバ側からテキストとして'document.~'を出力しています。
受取ったブラウザは外部Javascriptとして読み込んでいるのでそのテキストをJavascriptとして処理します。

混乱させてしまったようですが、CGIというのはHTMLやIMGだけを返すためにあるわけではないということです。

前回書き忘れましたがヘッダーも
Content-type: text/html
ではなく
Content-type: application/x-javascript
とする必要があります。

あと、#1に補足ですがexecコマンドが禁止されていてもincludeでCGIを呼び出すこともできます。
SSI自体禁止されている場合も多いのですが。とにかくSSIが使えるならSSIを使うことをお勧めします。

> html側ではperlで作成されたcgiではなくjavascriptで作成されたcgiですよね?
Perlで作られたCGIです。(一般にCGIがそうであるように、スクリプトの言語はPerlでなくてもかまいませんが。)

>perlとjavascriptが混在しているように見える
これはPerlです。
サーバ側からテキストとして'document.~'を出力しています。
受取ったブラウザは外部Javascriptとして読み込んでいるのでそのテキストをJavascriptとして処理します。

混乱させてしまったようですが、CGIというのはHTMLやIMGだけを返すために...続きを読む

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

QCGI動作後に元のページに戻る方法

Perl , javascript 初心者です。
あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。
submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか?
また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。

良い方法があれば教えて下さい。

Aベストアンサー

perlでは、
print "location: (URL)\n\n";
これでページを呼び出します。
同じフォームに戻らなくても、お礼のページを作った方が良いと思います。
どうしても、フォームに戻るなら、CGIから戻ってきたことが判るようにURLの後ろに「?back」などと識別コードを付けます。
そして、HTML内にJavaScriptを埋め込み、自分自身のURLを調べれば、普段のURLと違うことが判ります。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QPerlプログラム上でアラートを表示

現在、Perlにてチェックプログラム(チェック内容は省かせていただきます)を作っています。

もともとはweb上で「登録」をクリックすると以下のような csh で記述されたcgiが実行され、
------------------------------
#!/usr/bin/csh
echo "Content-type: text/html"
echo ""
~中略~
./既存プログラムA.exe
------------------------------
最終的に「既存プログラムA.exe」が起動するというような物で、今回この「既存プログラムA.exe」が起動される直前にチェックプログラムを実行するというものです。

前置きはこのような感じで、教えていただきたい内容は、
チェックプログラム内の記述に以下のようなチェック項目があります。
------------------------------
if(!(-e $CIRCUIT)){
print"END";
exit(0);
}
------------------------------
「$CIRCUIT」というフォルダが存在するか否か、存在すれば次のチェック項目へ、存在しなければ処理終了というような単純な構文なのですが、
このif文内に、"そのようなフォルダはありません"アラートを表示させるような記述を追加することは可能でしょうか?

サンプルURLや情報等お持ちの方いらっしゃいましたら、
よろしくお願いいたします。

現在、Perlにてチェックプログラム(チェック内容は省かせていただきます)を作っています。

もともとはweb上で「登録」をクリックすると以下のような csh で記述されたcgiが実行され、
------------------------------
#!/usr/bin/csh
echo "Content-type: text/html"
echo ""
~中略~
./既存プログラムA.exe
------------------------------
最終的に「既存プログラムA.exe」が起動するというような物で、今回この「既存プログラムA.exe」が起動される直前にチェックプログラムを実行するというも...続きを読む

Aベストアンサー

ウェブ上でアラートを出すなら
print <<END;
<script>
alert('メッセージ');
</script>
END
とかしてみたらどうでしょう。
(未確認自信なし)

Qボタンの処理

ボタンをクリックしたら指定されたサブルーチンの処理をするようなプログラムを作ろうとしているのですができません。submitではなくbuttonでやりたいのですが無理でしょうか?分かる方がいらっしゃいましたらよろしくお願いします。

Aベストアンサー

#1です。

これはPerlというよりもHTMLやJavaScriptのお話になりますが、
<button value="削除" name="hoge" onClick="delete()">
とした場合、「ボタンを押したらJavaScriptのdelete()関数を呼び出す」といった意味になります。
mizumaki22さんの組んだソース内に「function delete()」があればそれが呼ばれますが、無ければそこでエラーが発生するでしょう。
これは全てクライアント側で行われる作業であり、Webサーバ側では関知しません。

引き換え、Perlを動かす為にはサーバにアクセスして.cgiファイルを呼ばなければなりません。
そして.cgiファイルが呼ばれた際にWebサーバが内部的に処理を行い、その結果をクライアントに返します。
その為に一般的に使用されるのが<form action="hoge.cgi">といった記述です。
そうして<form>に記述された.cgiファイルを呼ぶには、<form>に対して"submit"を送らなければなりません。
その為に使用するのが<input type="submit" value="削除">といったような記述です。

mizumaki22さんのご質問の場合、この<input type="submit">を使わず<input type="button">で同じような動作をさせたいのかな?と読み取れました。
その場合には<input type="button">を押されたタイミングで"submit"を送ってやる必要があります。
それが#1で書いた<input type="button" onClick="submit()">の意味です。

前置きが長くなりましたが、直し方について・・といっても、もうほとんど書いてしまいましたが。(^_^;
mizumaki22さんの補足してくだっさったソースを見ると、CGI.pmというやつでしょうか。(正直、この辺りには余り詳しく無いのですが。)
> print button(-value=>"削除",-name=>"$link2",-onclick=>"delete()");
見たところ、この記述だと<input type="button" value="削除" name="hoge" onClick="delete()">というHTMLに出力されるように見受けられます。
これが<input type="button" value="削除" name="hoge" onClick="submit()">とHTML出力されれば動くと思われますので、
> print button(-value=>"削除",-name=>"$link2",-onclick=>"submit()");
でよろしいかと思われます。

#1です。

これはPerlというよりもHTMLやJavaScriptのお話になりますが、
<button value="削除" name="hoge" onClick="delete()">
とした場合、「ボタンを押したらJavaScriptのdelete()関数を呼び出す」といった意味になります。
mizumaki22さんの組んだソース内に「function delete()」があればそれが呼ばれますが、無ければそこでエラーが発生するでしょう。
これは全てクライアント側で行われる作業であり、Webサーバ側では関知しません。

引き換え、Perlを動かす為にはサーバにアクセスして.cgiファ...続きを読む

Q別ファイルのfunctionの読み込み方

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために私が最初に書いたhtmlの文です(もちろん実行できませんでした)
------------------------------------
<html>
<script language="javascript" src="hello.js">
aisatsu(){
document.write(aa);
}
</script></html>
------------------------------------

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために...続きを読む

Aベストアンサー

function内で「var」をつけて変数を宣言するとfunction外からその変数の内容を取得することができなくなります。(returnで参照することはできます。)
なので変数の内容を取得する場合は「hello.js」の内容を

function aisatsu(){
var aa="hello";
return aa;
}

このように修正し、

<script language="javascript" src="hello.js"></script>
<script language="javascript">
var data=aisatsu();//「aisatsu()」関数の「aa」変数内のデータを引っ張り出す(return aa;)
document.write(data);//書いたり
alert(data);//アラートしたり
window.status=data;//ステータスバーに表示したり・・
</script>


人気Q&Aランキング