(since 1998/7)(更新 2002/12/10)

TNO:JavaScriptのトラブル・ガイド

情報系/IT系の広告を掲載しています。(広告一覧)
私自身が実際に経験している、 ホームページのJavaScript作成の際のトラブルです。
ブラウザによって、異なるかもしれません。
今後増えることでしょう。(^^)?polipoli
©Copyright 1998-2002 小野智章(小野情報設計)
無断転載を禁止します。

  1. <FORM>の<INPUT>タグ
    <FORM>の<INPUT>タグをアクセスするには、 「document.forms[0]["X"].value」などを使う。
    「[0]」は、複数の<FORM>の最初という意味。
    「["X"]」は、<INPUT>タグに 「NAME="X"」という形式で付けた名前を指定。
    「value」は、入力した値や「VALUE="0"」という形式で設定した値。 これを「name」にすると、「NAME="X"」で設定した名前。
  2. <FORM>の<INPUT>タグ2
    <FORM>や<INPUT>タグをアクセス出来るのは、 実際にそれが表示された後。 HTML中の<INPUT>タグの表示より前にアクセスしても、 エラーになる。
    HTML中の<INPUT>タグの記述位置より後に記述する、 ボタン・クリックで関数を呼び出す、 等の形で実際のアクセスが表示後になれば良い。 関数の本体は、記述位置では実行されないので、 <INPUT>タグの表示より前に記述してもOK。
  3. TYPE=radio
    <FORM>の<INPUT>タグを使ってみるが、 Scriptからは 「RADIO」は名前で指定しては扱えない。 理由は推測出来るのだが、不便。
    「document.forms[0].elements[10].value」などでアクセス出来る模様。 「elements[10]」は、10番目の<INPUT>の意味。
    「onClick="change(this);"」を個々の<INPUT>に付ければ、 「function change(t)」の中で 「t.checked」「t.value」としてアクセス出来る。 またチェックの変更もOK。 その値は、チェック有りが「true」、無しが「false」。
    「;」を忘れると、エラーにならずに変な動作をするので注意。 (ブラウザのバージョンにも因るのでは、と思うのだが。) エラーが出ないのでどちらでも良いのかと思っていて、 原因の確認に手間取ること、手間取ること。
  4. TYPE=checkbox
    <FORM>の<INPUT>タグを「CHECKBOX」にすれば、 「RADIO」と異なり、 「document.forms[0]["X"].checked」という形式で チェックが入っているかどうかはアクセスは出来る。 ただし同じ「NAME」だと、 その「NAME」を付けた最初の「CHECKBOX」しかアクセス出来ない。 これも当たり前だが。
    「CHECKBOX」毎にそれぞれ別の「NAME」を付け、 「onClick="change(this);"」で関数を呼び出し、 その関数で他の「CHECKBOX」をオフすようにすると、RADIOの代わりになる。 しかも、RADIOと異なり、全てのチェックをオフすることも出来る。
  5. 配列
    C言語の様に記述してみるが、その様には扱えない。 Javaとも違う様子。 やはり文法書が……。
  6. NOSCRIPT
    もしも<NOSCRIPT>にも対応してないブラウザがあったら、 と思って次の様なコードを考えました。
    ---------------
    <SCRIPT>
    <!--
    /* 適当な処理 */
    document.writeln('<!--');/* 際どい */
    //-->
    </SCRIPT>
    適当なHTML
    <!---->
    ---------------
    が、良く考えたら、 <NOSCRIPT>に対応しているブラウザとは、 <SCRIPT>に対応しているブラウザで、 <NOSCRIPT>で括った範囲が無効になるのでした。 <NOSCRIPT>に対応していなければ <NOSCRIPT>で括った範囲が有効でした。
    上のコード、何かに使えないものでしょうか? 最初の実行時点だけですが、 JavaScriptから 「適当なHTML」の有効/無効を制御出来るのですが。
  7. JavaScriptが使用出来ないブラウザ
    次のHTMLで、「戻る」タグ/ボタンが可能になる。 ただし、JavaScriptが使用出来るブラウザのみに表示される。
    ---------------
    <SCRIPT>
    <!--
    document.writeln('<A HREF="javascript:history.go(-1)">前のページへ戻る</A><BR>');
    //-->
    </SCRIPT>
    ---------------
    JavaScriptが使用出来ないブラウザでも、 直接Aタグで囲まれた部分だけを記述すると表示される。 が、動かないので、この形式にした方が良い。
    ちなみに、2ページ前には戻れない様です。
  8. メール
    JavaScriptで、メールを送ることが出来る。現在研究中。
    CGI無しで注文フォームを作成出来ると考えたが、 JavaScriptの使えないブラウザを考えると、 やはりCGIで受付けた方が良いか。
  9. フォーム・データ受取
    フォーム入力を、JavaScripで受取ることが出来ます。
     ==>
    小道具:基数テーブル

文法書無しでJavaScriptをやってみているが、良く分からん。 やはり文法書は必要か?

質問・ご意見等、お待ちしております。 質問については、判る範囲で出来るだけ答えて行きたいと思います。
小野智章(小野情報設計) 
Mail連絡先

CGIのトラブル・ガイド
ホームページのトラブル・ガイド
T掲示板
トップ・ページへ

©Copyright 1998-2002 小野智章(小野情報設計)
無断転載を禁止します。