- ベストアンサー
初心者なのにJAVAスクリプトを使うから!
HP作成初心者で、特にJAVAスクリプトに関しては赤子にも及びませんが助言して頂けたら幸いです。 まずいくつかの画像を、全部暗い感じにしてオンマウスでスポットライトがあたったように明るくなるような(フェードインする感じです)JAVAスクリプトを使いました。 そして同じ画像ににオンマウスで任意のテキストを表示させるJAVAスクリプトを使いたいのですが、やり方がよくわかりません… 個々には出来るのですが…(当たり前ですが;) そもそもHEAD間に2つJAVAスクリプトを書いていいかもよくわかっていませんし、 BODY間のその2種類のJAVAスクリプトを呼び出したい場所での書き方もよくわかりません。 自分なりに色々と調べてはみたのですが、答えが見つかりませんでした… 本当に初心者丸出しで、質問の意味もわかりにくいかとは思いますが、わかる方がいらっしゃいましたら是非教えて下さいませ<(_ _)>
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
1)文字コードをとりあえず <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> にして下さいEUC-JPでは動きませんでした 2)スクリプトの途中の //--> を削除 var msg= new Array(); msg[0]="任意のテキスト1"; の前の行 3)<body bgcolor="#000000" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF"> <p><font color="#FFFFFF" size="2"><strong>どこが間違っているのでしょうか…</strong></p> までを削除 ※ <BODY>が2つあります 4)<div id="mesTxt"> </div> の部分を <DIV id="mesTxt" style="position: absolute; top: 300px; left: 30px;"> </DIV> に変更する ※ 画像の下に文字が表示されてしまう為 レイヤーの位置を指定してやる top: 300px; left: 30px; の300,30の部分を変更して目的の場所にして下さい これでいかがでしょうか とりあえず前作をメモ帳へコピペし、画像の指定と文字コードの指定をしてやってみてください IE6で動作確認しています (フィルターとDOMの解るブラウザな為) 何かありましたらご遠慮なくどうぞ
その他の回答 (5)
- togino
- ベストアンサー率75% (97/129)
> document.getElementById("mesTxt").innerHTML=msg[i]; とありますので > msg[0]="任意のテキスト"; を msg[0]="<font color='red'>任意のテキスト</font>"; とすれば、赤色になると思いますよ。
お礼
今回、またまたど初心者ぶりをいかんなく発揮してしまいましたが、教えて頂いたサイトを血眼になって読んで勉強しようと思います。 初心者の自分にとっては全てのアドバイスが今後の為になりました。 この度は本当にありがとうございました。 調べてもわからず、また打ちひしがれている自分を見つけたなら、また助け舟を出して頂けると幸いです。 それでは、失礼します。
- togino
- ベストアンサー率75% (97/129)
ANo1 で補足要求した togino です。 もう peron さんが的確な回答をして頂いているので それで十分だと思いますが、少し latin82 さんが 苦しまれているようですので、アドバイスを。 HP 作成初心者には、ちょっと高度なスクリプトを ご利用のようです。大変なのは当然ですので、 お気になさらないよう、お願いします。 これらのプログラムは JavaScript の域を超えて DynamicHTML と呼ばれる技術に入りかけております。 DynamicHTML とは、HTML をブラウザの上で、動的に 自由自在に操作して、動きのある Web ページを作る 技術の総称です。 これを実現する為に、JavaScript やスタイルシート DOM (Document Object Model: 文書構造制御モデル) などが用いられます。 なので、初心者にはかなり難しいと思いますので まずは http://tohoho.wakusei.ne.jp/js/index.htm ここを読んでから http://tohoho.wakusei.ne.jp/www.htm にて「ホームページ入門」「ダイナミックHTML」 などをゆっくり読まれると、プログラムの意味が 分かると思います。 難しいですが、逆に理解されますと、びっくり するような HP を作ることも可能になり 楽しいものですよ。がんばってください (^^)
- peron
- ベストアンサー率45% (43/95)
#2 追加情報 書き忘れです テキストエリアに表記出来ないのは、 document.getElementById("mesTxt").innerHTML の("mesTxt")はレイヤーを指していますので、 <div id="mesTxt"> </div> の空白のレイヤーにしか文字を表記出来ない為です ここに入る文字はinnerHTMLの中途半端な性格上 テキストと<BR>タグぐらいです リンクには使えません 読み込んだ状態でテキストエリアを表示するのであれば、<FORM>以下を記入しても良いですが、画像にさわると とたんにテキストになってしまいます
補足
色々ご親切に教えて頂き本当にありがとうございます。 しかし、言われた通りにやってみたつもりなのですがランタイムエラーになってしまいます。自分の書いたどこかの記述が間違っているようです…JAVAスクリプト以外の所が間違っているのかもしれないと思い、教えて頂いたJAVAスクリプトだけのページをメモ帳で作りましたがやはりランタイムエラー(∵がありません)が起きました。 自分ではどこが間違っているか検討もつきません… どこが間違っているかわかるようでしたら、是非教えて下さい。 <html> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=EUC-JP"> <title>間違い探し</title> <STYLE type="text/css"> <!-- A:link {text-decoration:none} A:visited {text-decoration:none} A:active {text-decoration:none} A:hover {color:#FFFFFF; position:relative; top:1; left:1} --> </STYLE> <SCRIPT type="text/javascript"> <!-- lo=["rm1","rm2"]; ve=Array(); for (i=0; i<lo.length; i++) ve[i] = 0; lowAlpha = 30; function RM(){ for (i=0; i<lo.length; i++){ n=eval(lo[i]).filters["alpha"].opacity + ve[i]; if (n > 100) n = 100; if (n < lowAlpha) n = lowAlpha; eval(lo[i]).filters["alpha"].opacity = n;}} function setFade(tID,n){ for (i=0; i<lo.length; i++) if (lo[i] == tID) ve[i] = n;} //--> var msg= new Array(); msg[0]="任意のテキスト1"; msg[1]="任意のテキスト2"; function msgOn(i){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=msg[i]; } else { document.f1.msgtxt.value=msg[i]; } } function erase(){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=""; } else { document.f1.msgtxt.value=""; } } window.onload=erase; //--> </SCRIPT> </HEAD> <body bgcolor="#000000" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF"> <p><font color="#FFFFFF" size="2"><strong>どこが間違っているのでしょうか…</strong></p> <body onLoad="setInterval('RM()',10)"> <img src="画像URL" width="190" height="190" id="rm1" style="filter:alpha(opacity=30);" onMouseover="msgOn(0),setFade(this.id,5)" onMouseout="erase(),setFade(this.id,-5)"> <img src="画像URL" width="190" height="190" id="rm2" style="filter:alpha(opacity=30);" onMouseover="msgOn(1),setFade(this.id,5)" onMouseout="erase(),setFade(this.id,-5)"> <div id="mesTxt"> </div> AAA </body> </html>
- peron
- ベストアンサー率45% (43/95)
このままだとレイヤー上のテキストエリアには何も記入されませんので、テキストエリアを省略します <HEAD> <SCRIPT type="text/javascript"> <!-- lo=["rm1","rm2"]; ve=Array(); for (i=0; i<lo.length; i++) ve[i] = 0; lowAlpha = 30; function RM(){ for (i=0; i<lo.length; i++){ n=eval(lo[i]).filters["alpha"].opacity + ve[i]; if (n > 100) n = 100; if (n < lowAlpha) n = lowAlpha; eval(lo[i]).filters["alpha"].opacity = n;}} function setFade(tID,n){ for (i=0; i<lo.length; i++) if (lo[i] == tID) ve[i] = n;} var msg= new Array(); msg[0]="任意のテキスト1"; msg[1]="任意のテキスト2"; function msgOn(i){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=msg[i]; } else { document.f1.msgtxt.value=msg[i]; } } function erase(){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=""; } else { document.f1.msgtxt.value=""; } } window.onload=erase; //--> </SCRIPT> </HEAD> <body onLoad="setInterval('RM()',10)"> <img src="画像" width="190" height="190" id="rm1" style="filter:alpha(opacity=30);" onMouseover="msgOn(0),setFade(this.id,5)" onMouseout="erase(),setFade(this.id,-5)"> <img src="画像" width="190" height="190" id="rm2" style="filter:alpha(opacity=30);" onMouseover="msgOn(1),setFade(this.id,5)" onMouseout="erase(),setFade(this.id,-5)"> <div id="mesTxt"> </div> </body> これをコピペして、画像の部分に画像のURLを入れて試してみてください ※ <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> も<HEAD>に忘れずに タグの大文字、小文字がばらばらになっています 私はタグを大文字で書くため、申し訳ないですが変更してください(動作には支障がありません)
- togino
- ベストアンサー率75% (97/129)
> そもそもHEAD間に2つJAVAスクリプトを > 書いていいかもよくわかっていませんし 別にかまいませんよ <html><head> <script type="text/javascript"> <!-- ~~ここにフェードインするスクリプト~~ // --> </script> <script type="text/javascript"> <!-- ~~ここにテキストを表示させるスクリプト~~ // --> </script> </head> まったくかまいません。 しかし、2つの間で同じ関数名や変数名を使っている場合 片方の名前を変えてあげたりする作業が必要になる 場合もあります。 > BODY間のその2種類のJAVAスクリプトを > 呼び出したい場所での書き方 例えば、フェードインする側で <img src="hogehoge.jpg" onMouseOver="FadeIn()"> テキストを表示する側で <img src="hogehoge.jpg" onMouseOver="DisplayText()"> となっている場合 <img src="hogehoge.jpg" onMouseOver="FadeIn();DisplayText()"> のようにまとめることが可能です。 しかし、お互いが干渉しあうことがあるので、その場合 どちらかのプログラムを少し修正する必要があるかも しれません。 あとは、具体的にそのプログラムを見せて頂けますか? スクリプトの内容によって、簡単に出来たり出来なかったり するものですから。
補足
おぉこんなに早くに的確なご解答をして頂き、本当にありがとうございます。以下がプログラムです。 1)オンマウスで透過していた画像が戻るJAVAスクリプト ヘッダー <script language="JavaScript"> <!-- lo=["rm1","rm2"]; ve=Array(); for (i=0; i<lo.length; i++) ve[i] = 0; lowAlpha = 30; function RM(){ for (i=0; i<lo.length; i++){ n=eval(lo[i]).filters["alpha"].opacity + ve[i]; if (n > 100) n = 100; if (n < lowAlpha) n = lowAlpha; eval(lo[i]).filters["alpha"].opacity = n;}} function setFade(tID,n){ for (i=0; i<lo.length; i++) if (lo[i] == tID) ve[i] = n;} //--> </script> ボディー <body onLoad="setInterval('RM()',10)"> <img src="画像参照先" width="190" height="190" id="rm1" style="filter:alpha(opacity=30);" onMouseover="setFade(this.id,5)" onMouseout="setFade(this.id,-5)"> <img src="画像参照先" width="190" height="190" id="rm2" style="filter:alpha(opacity=30);" onMouseover="setFade(this.id,5)" onMouseout="setFade(this.id,-5)"> </body> 2)オンマウスで任意のテキストを出すJAVAスクリプト ヘッダー <script type="text/javascript"><!-- var msg= new Array(); msg[0]="任意のテキスト"; msg[1]="任意のテキスト"; function msgOn(i){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=msg[i]; } else { document.f1.msgtxt.value=msg[i]; } } function erase(){ if (document.getElementById){ document.getElementById("mesTxt").innerHTML=""; } else { document.f1.msgtxt.value=""; } } window.onload=erase; //--></script> ボディー <body> <a href="#" onClick="return false;" onMouseover="msgOn(0)" onMouseout="erase()"><img src="画像参照先 "width="190" height="190" alt="画像0"></a> <a href="#" onClick="return false;" onMouseover="msgOn(1)" onMouseout="erase()"><img src="画像参照先" width="190" height="190" alt="画像1"></a> <div id="mesTxt"> <form name="f1"> <textarea rows="5" size="40" name="msgtxt"></textarea> </form> </div> </body> 自分でJAVAスクリプトを調べている時にいつも関数、変数の所は飛ばしていました; 今度からじっくり読んでみようと思います。
お礼
この度は親切丁寧に教えて頂きまして本当にありがとうございました。 これからは自分でも勉強して、質問に答えられる側に立てるように精進していこうと思います。 また調べてもわからず、打ちひしがれている自分を見つけたなら、そっと手を差し伸べて頂けると幸いです。 スーパーマンのようなperonさん、本当にどうもありがとうございました。 それでは失礼します。
補足
今まで自分でも色々試してやっていて、何度やってもランタイムエラーが出てきてしまっていました… そしてperonさんの言った通りに書き換えたってどうせ… なんて失礼にも思っていたのですが スパっと完璧に出来ちゃいました!有料かと思ってしまうほどの素敵なアドバイスを本当にありがとうございました!! それと、ついでと言ってはなんなのですが var msg= new Array(); msg[0]="任意のテキスト"; msg[1]="任意のテキスト"; ここの、任意のテキストの部分はフォントやら大きさやらカラーやらは変えられるのでしょうか? 自分で色々試してはいるのですが…変えられませんです。