スタートページJavascript

prototypeの基礎

prototype.jsは、jQueryと同様のJavaScriptライブラリです。
prototype.は膨大な機能があるので、ここでは私が興味をもった、Ajax.UpdaterとAjax.Requestだけに限定してテストをしました。そのテスト結果の個人的メモです。

例1:Ajax.Updaterによる全体表示
例2:Ajax.Requstによる全体表示
例3:Ajax.Requestによる部分表示


prototype.jsの利用環境設定

Ajax.UpdaterとAjax.Request

子ファイルの相対指定等の問題

基本的に親ファイルの表示個所に、子ファイルをそのまま記述したのと同じなので、子ファイルの画像表示やHead部に記述したスクリプトは、親ファイルに表示したときにそれらが反映しなくなります。それに関しては、「Test」を参照してください。


例1:Ajax.Updaterによる全体表示

Ajax.Updaterは、子ファイルを読み込んで、親ファイルの任意の場所に表示する機能です。

▼▼▼▼▼ ここから ▼▼▼▼▼

▲▲▲▲▲ ここまで ▲▲▲▲▲

<script type="text/javascript">
    function 例1(表示場所, 子ファイル名) {
        new Ajax.Updater(         // A
            表示場所,             // B
            子ファイル名,
            { method: "get" }     // C
        );
    }
</script>

<input type="button" value="例1実行"
    onclick='例1("例1表示場所", "called/called1.html")'>
</input>
<div id="例1表示場所"></div>

例2:Ajax.Requestでの全体表示

例1:Ajax.Updaterによる全体表示と同じことを、Ajax.Request を使って行います。

▼▼▼▼▼ ここから ▼▼▼▼▼

▲▲▲▲▲ ここまで ▲▲▲▲▲

<script type="text/javascript">
    function 例2(表示場所, 子ファイル名) {
        new Ajax.Request(                          // D
            子ファイル名,
            {
                method: "get", 
                onSuccess: function(読込情報) {     // E
                               例2読込後処理(表示場所, 読込情報.responseText);
                           }                        // F┘
            }
        );
    }

    function 例2読込後処理(表示場所, 読込文) {     // G
        $(表示場所).innerHTML = 読込文;             // H
    }
</script>

<input type="button" value="例2実行"
    onclick='例2("例2表示場所", "called/called1.html")'></input>
<div id="例2表示場所"></div>

例3:外部ファイルの部分表示

例2での「例2読込後処理」の部分を書き換えることにより、読み込んだ子ファイルの内容から特定の個所だけを表示したり、変更して表示することができます。
次の例では、文中に「h4」の文字列がある行だけを選択して表示しています。

▼▼▼▼▼ ここから ▼▼▼▼▼

▲▲▲▲▲ ここまで ▲▲▲▲▲

<script type="text/javascript">
    function 例3(表示場所, 子ファイル名) {
        new Ajax.Request(
            子ファイル名,
            {
                method: "get", 
                onSuccess: function(読込情報) {
                               例3読込後処理(表示場所, 読込情報.responseText);
                           }
            }
        );
    }

    function 例3読込後処理(表示場所, 読込文) {
        var 行 = 読込文.split("\n");              // I
        var 表示内容 = "";
        for (var i = 0; i < 行.length; i++) {
            if (行[i].search(/h4/i) >= 0) {       // J
                表示内容 += 行[i];
            };
        };
        $(表示場所).innerHTML = 表示内容;
    }
</script>

<input type="button" value="例3実行"
    onclick='例3("例3表示場所", "called/called1.html")'></input>
<div id="例3表示場所"></div>