このページは実はみなさんの質問を受け付けて技を編み出していくコーナーです(どこからでもかかってきなさいっ 笑)。これから少しずつ増やして行きますのでよろしくお願い致します(_ _)。ポストはこちら(^^)/

Q23クリスマスまでの日数カウントダウンをページに付けたい。
ADateオブジェクトを使います。

例 :


<SCRIPT LANGUAGE="JavaScript">
<!--

  /*targetDay count down------------------------------------------
      This Script is copy&modifai FREE
      Toshrou Takahashi tato@fureai.or.jp
      Support URL :http://www.fureai.or.jp/~tato/JS/BOOK/INDEX.HTM
  -----------------------------------------------------------*/
  
  function countDwnDays(month,day){
	
    var today = new Date()
    var targetDay=new Date(today.getYear(),month-1,day)
    var zan=targetDay-today
    var zanhi=zan/(1000*60*60*24)
    var targetDayMsg=''
  
        targetDayMsg+='<B>targetDay</B>'
        targetDayMsg+='まであと'
        targetDayMsg+=(''+Math.ceil(zanhi)).fontcolor('red')
        targetDayMsg+='日'.fontcolor('green')
        targetDayMsg+='です'
        
           document.write(targetDayMsg+'<BR>')
           
  }
  
  countDwnDays(12,25)
  
  /*---------------------------end---------------------------*/
  
//-->
</SCRIPT>

Q22[F02]の背景色コントローラーのサブウィンドウですが、ページを抜けたときに[D14]のようにcloseしたい。
Aこれみてください。

Q21[K10]の触ると絵が変るリンクボタンでそれぞれ別の絵がかわるようにしたいんですけど。
Aこれみてください。

Q20[K10]の触ると絵が変るリンクボタンでリンク先を別フレームに出したいんですけど。
Aこれみてください。

Q19「****.js」という外部ファイルを作って実行させる際、ローカルで実行させるとうまくいくのですが、いざWEBサーバにのっけてみるとjsファイルを保存しますか??と聞かれます??どうすれば動くのですか?
Aもしあなたのサーバー(プロバイダなど)がNCSAを使っていてAddType指定をあなたが使うことを許可されているならp23のコラムにもありますが
.htaccessファイルの中に
AddType application/x-javascript .js
を記述してください。わからなければ、まずプロバイダかサーバーの管理者に聞きましょう。で、NTの場合は

サーバの管理者としてログオンして,
regedt32.exe で以下のレジストリを変更します。
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
     \Services\InetInfo\Parameeters\MimeMap
ここに値を追加します。
値の名前: application/x-javascript,js,,0:
値の型: REG_SZ
値: (空)
その後 WWW, Gopher, FTP のサービスを停止,再起動します。
参考:
http://www.microsoft.com/japan/support/tdoc/doc/iis/WNJ2865.htm
という処理になるそうです。
ちなみに、.js外部ファイルはNN3.0からIEは4.0から使えるようになりました。詳しくはp23を見てね。

Q18「リンクに触れたときに、ステータスバーに文字列をスクロールさせる」ことはできるのでしょうか。
A[H02]と[H01]を合体させるだけです。

まずH02の<HTML>から</HEAD>までをコピーしておいて、
その下に
H01の<BODY>以下をコピーしてつなげます。

次に
onMouseOver=".......true"の部分を
onMouseOver="scll() ; return true"
と書き換えておしまい(^^)

もし、
離れたときにスクロールを止めたければ
onMouseOverのあとに
onMouseOut="clearTimeout(timeID) ; return true"
を付け加えます。
サンプルはここにあります。

Q17サンプル集の[H01] 中に
*******
status='文字列'でステータスバーに'文字列'を表示します。
onMouseOver内でstatusを指定するときはreturn trueが必要です。
(NN4.0b3現在Mac版にはバグがありreturn
falseでないと表示されません^^;。おそらく、正式版までには直ると
思いますが著者のサポートページをご確認ください。)
*******
と書いてありますが現在、これはどの様な状況なのでしょうか。あと[M12]のNN4.0b3Mac版でdocument.write()が不安定の件は?
ANN4.01から直っています。他に[M12]で書いたNN4.0b3Mac版のdocument.write()での不安定さもNN4.01の時点で解消されています。

Q16触ると画像が変るスクリプト(サンプル集のKなど)はIE3.0では対応してないのですか?
A画像はImageオブジェクトを使って処理しますが、NN3.0(Mozilla3.0)からのサポートです。IE3.0はマシンとバージョンによってMozilla2.0だったり4.0だったりするため、一概にはいえません(^^;;。したがって、今の所この手のスクリプトは使えないバージョンとの分岐をMozillaの番号で行います。

NN2.0(Mozilla2.0) は対応していません。
NN3.0(Mozilla3.0) は対応しています。
NN4.0(Mozilla4.0) は対応しています。
IE3.0(Mozilla2.0) for Win は対応していません。
IE3.0(Mozilla2.0 or 4.0) for Mac はリリース時期によって対応しています。
IE4.0(Mozilla4.0) for Win は対応しています。
IE4.0(Mozilla4.0) for Mac は対応しています。
*IE2.0はscriptを使えません(使ってる人もいない。笑)

Mozillaのあと数字はnavigator.appVersion.charAt(0)で取り出すことができ、これが3以上ならこのスクリプトを使えることになります。
分岐例 : if(navigator.appVersion.charAt(0)>=3){画像処理関係の命令}

Q15G01に<FRAME>のサンプルがありますが、IEの<IFRAME>にlocation.hrefでページ読み込みしたいんですけど...。
A<IFRAME SRC="?????" NAME="iframeName" ...........
とゆー風にIFRAMEに名前を付けといてから
top.window.iframeName.location.href="loadPage.html"
という具合にその名前(iframeName)で呼んであげれば良いです。

Q14質問に対する答えの数によって処理を分岐したいんですけど...。
Aいろんな方法があるとは思いますがここに、1つ置きましたので参考にしてみてください(^^)。

Q13Q9と同じ質問なんですが、K06やK07で拡大画像の前に画像を置くと前の画像が変わってしまいます。
Aここに、何枚入れようとだいじょぶな[K07+1]を置きましたのでご利用ください(^^)。

Q12F01のメニューウインドウ内のボタンを画像にしたいのですが...
Aたとえば、

WinF01.document.write('<INPUT TYPE="button" VALUE=" 目次 " onClick=opener.location.href="../../CONTENTS.HTM"><BR>'); これを WinF01.document.write('<A HREF="javascript:void(0)" onClick=opener.location.href="../../CONTENTS.HTM"><IMG SRC="目次.gif" BORDER="0"></A><BR>'); にしてみてください(^^)

Q11枠の中をテロップが流れるスクリプトで、枠の下地を「黒」流れる文字を「緑」にしたいのですが、どうしてもできません。なにか良い方法を教えて下さい。
Aたとえば、
H02はほとんどの環境で使えますが下地と文字の色を指定することはできません。

Netscape3やIE3などで流れるテロップの色を指定するにはテロップ画像を用意してGIFアニメやJavaScriptアニメ(K09やK11など)でやります。

フレームやサプウインドウへのdocument.write()とdocument.clear()を連続して行うことで実現することもできます(が、あまりスマートではない^^;;)。

IE+Winだけ(MacやUNIX+IEの組み合わせで使ってる人は皆無です^^;;)を対象にするならMARQUEEタグを使えばできます。

Netscape4だけでよければL05のレイヤー内の画像を色指定した文字に取り替えたり、レイヤー内の背景色をたとえば、
document.layers['testLayerName'].bgColor='#000000'
と指定したりすることで簡単に実現できます。

Q10K10のインタラクティブボタンをクリックしても最後の画像がちらっとしか見えないぞー。せっかく作ったんだからもっとちゃんと見せたいっ。
Afunction BTN1Click(imgNo)のなかに下記のようにsetTimeoutを記述することでリンクへとぶタイミングを1秒遅らせます。(0.5秒にしたければ1000を500にします)。

function BTN1Click(imgNo){ if(navigator.appVersion.charAt(0)>=3){ document.images[imgNo].src=Img2 }; setTimeout('window.location.href=eval("Linkpage"+'+imgNo+')',1000); };

Q9K01やK02で切り替えたい画像の前に画像を置くと前に置いた画像の方が勝手に切り替わってしまいますが...。
AchangImage1(0,x)の0を、前に置きたい画像枚数に書き換えてください。
前に1枚画像を置くならchangImage1(1,x)に、
2枚ならchangImage1(2,x)に、
10枚ならchangImage1(10,x)という具合にします。
この数字がfunction changImage1(imgNoA,imgNoB)内のimgNoAに引き渡されて、たとえばchangImage1(10,x)なら、 document.imges[10].src(ページ内で11枚目の画像を意味します)をmovimg[x].srcで指定した画像に書き換えてくれます。

Q8formで記述した内容、特にE-Mailアドレスを入力してあるかどうかをチェックし、欲をいえば、できるだけインチキでないアドレスが記述されているのを確認してから、送信する方法を教えてください。
Aこんなんでどうでしょ? 未入力だとダイアログを出して再入力となります。E-Mailアドレスは@の文字だけチェックしました。 (Thanx>Maki Murakamiさん)

Q7自分のコンピュータの中では動くのに、なぜか、サーバーに置いたとたんに動かなくなってしまうのです。gifイメージがみつからないと言うのですが、確かにサーバーの中にはあります。どういうことなのでしょうか。
A'339.GIF'という風にスクリプトのなかに書いてありますが、実際は'339.gif'ではありませんか? Win95やMacのローカル上ではgifがGifやgIFになっていてもちゃんと動いたりするのですが、プロバイダーのサーバーでは普通は大文字小文字が厳密に区別されているので、こういう結果になるというわけです。ファイル名などもWin95では勝手に大文字小文字を書き換えられたように見えたり?するので気を付けましょう。 ちなみに、JavaScriptの命令は大文字小文字を区別して使います。 (Thanx>Hajime Yanaseさん)

Q6E01「ボタンクリックでサブウインドウ....」で 1つのページにサブウインドーを複数使おうとすると、サブウインドーのなかの文字が同じになってしまいます。WinE02の個所をWinE03,WinE04等に変えても同じ結果でした。
A複数のサブウィンドウを開くためには、E01のサンプルだとWinE02=window.open('','WinNameE02','toolbar=0,......の行のWinNameE02の部分を変える必要があります。 で、下記のような方法もあります(^^)。 (Thanx>Yoshio Hayashiさん)

<HTML> <HEAD> <TITLE></TITLE> <SCRIPT LANGUAGE="JavaScript"> <!------- var Win=new Array(3) ;//サブウィンドウ用の配列 var Msg=new Array(3) ;//サブウィンドウメッセージ用の配列 var Flg=new Array(3) ;//サブウィンドウ開閉chk用フラグ /*IE3.0では開閉chkのためにwindow.nameの有無を調べようとするだけで 強制終了する場合があるのでフラグをたてて開閉を確認しています*/ Msg[0]='<B>どうも(^^)/</B>' ;//サブウィンドウ0用メッセージ Msg[1]='<B>だうも(^^)/</B>' ;//サブウィンドウ1用メッセージ Msg[2]='<B>どーも(^^)/</B>' ;//サブウィンドウ2用メッセージ //サブウインドウオープン function WinOpen(i){ Win[i]=window.open('',i,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=100,height=100'); Win[i].document.write(Msg[i]); Win[i].document.close(); Flg[i]=1 }; //サブウインドウクローズ function WinClose(i){ if(Flg[i]==1){Win[i].close();Flg[i]=0}; }; <!-------> </SCRIPT> </HEAD> <BODY> <FORM> <INPUT TYPE="button" VALUE=" Window0オープン " onClick="WinOpen(0)"><BR> <INPUT TYPE="button" VALUE=" Window0クローズ " onClick="WinClose(0)"><BR> <INPUT TYPE="button" VALUE=" Window1オープン " onClick="WinOpen(1)"><BR> <INPUT TYPE="button" VALUE=" Window1クローズ " onClick="WinClose(1)"><BR> <INPUT TYPE="button" VALUE=" Window2オープン " onClick="WinOpen(2)"><BR> <INPUT TYPE="button" VALUE=" Window2クローズ " onClick="WinClose(2)"><BR> </FORM> </BODY> </HTML> Q5下記のように、<INPUT>タグのNAMEオプションに日本語を使用した時、JavaScriptで使用できますか? <HTML> <HEAD> <TITLE>NAMEへ日本語を使用する</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function JapanName(form){ alert(form.日本語.value); } //--> </SCRIPT> </HEAD> <BODY> <FORM METHOD="POST" onsubmit="JapanName(this)"> <INPUT TYPE="text" NAME="日本語"> <INPUT TYPE="submit" VALUE="確認"> </FORM> </BODY> </HTML> A上のスクリプトをコピーしてやってみるとわかりますがこのままではできません。でも、alert(form.elements["日本語"].value)とするとうまくいったりします^^;;。実はこれ、仕様はform名.elements[index番号] ですが、form名.elements["elements名"]も使えて、ここでは日本語が通ったりするのです。ただ、やはりプログラムの中に日本語を使うのはエラーの元ですから、変数や関数名なども含めてスクリプト中に日本語を使うことはやめときましょう^^;;。どうしてもNAMEに日本語を使いたいという時はせいぜいalert(form.elements[0].value)ってな具合にelements[index番号]で指定するくらいにとどめておきましょう。(Thanx>加藤芳彦さん)

Q4動かないんですけど...。

function test(){ if( navigator.appcodeName == "MSIE" ){ alert ("You can enjoy this site by using Netscape Navigator"); } }
Aこうです(^^)v。 if( navigator.appcodeName == "MSIE" ){ これを if( navigator.appCodeName == "MSIE" ){ こうします。 JavaScriptの命令は大文字小文字を区別して使うので気をつけましょう(^^)/。(Thanx>Kasaiさん)
Q3Netscape(2.02,3.0+MAC)でテキストエリアへの日本語入力を検知できないんですけど...。
A
たとえば、下の入力フィールドは英数字では大丈夫なのですがひらがなや漢字を入れて"入力内容test1"ボタンをクリックしたときにMac+NN2.0,3.0,4.0ではうまく反映されない場合があります。




<FORM NAME="f1"> <INPUT TYPE="text" NAME="oh_god" ><BR> <INPUT TYPE="button" VALUE="入力内容test1" onClick="test1()"><BR> <INPUT TYPE="button" VALUE="入力内容test2" onClick="test2()"><BR> <INPUT TYPE="reset"><BR> </FORM> <SCRIPT> function test1(){ alert("oh_god=" + document.f1.oh_god.value) } /* 回避----------- */ function test2(){ //Macならリロード if(chkMac()){history.go(0)}else{test1()} } function chkMac(){ //Macかどうか調べる。Macならtrueを返す。 if(navigator.userAgent.indexOf("Mac")!=-1)return true } if(chkMac()){ if(document.f1.oh_god.value) alert("oh_god=" + document.f1.oh_god.value) } /* 回避end----------- */ </SCRIPT>
これは日本語入力のバグですが、たとえば、入力時にスペースなどの半角を入れるようにするととりあえず^^;;読めるようにはなります。また、入力後history.go(0)で再読み込みを行う方法(上記test2)もあります。この場合、Macを分岐することと、go(0)の後に入力スキャンが行われるようになんらかのタイミング調整(ここではload時にvalueのある無しをchk)が必要です。 (Thanx>黒田さん)

Q2Javaって難しいんですけど...。 AJavaScriptなら簡単です(^^)v。
Q1JavaScriptのソフトはどこで手にいれればよいのですか?
AJavaScriptはJavaやショックウェーブなどのような特別な開発環境を必要としません。HTMLを書くのと同じエディタがあればokです。あとは、Netscape Navigatorの2.0以上かIEの3.0以上のブラウザがあれば動きます。つまり、HTMLを書く道具とまったく同じでかまいません(^^)。
Q0わたしは素敵なおじ様が好きなんですが高橋さんてどんな方なのでしょう?
A素敵なおーじ様です。きっぱり。<おじー様だったりして^^;;


つづく....^^;;;;








Maintained by
tato@fureai.or.jp works1997 Toshirou Takahashi