ref_html_js
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| ref_html_js [2025/03/14 13:29] – klab | ref_html_js [2025/03/20 16:06] (現在) – klab | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | # HTMLオブジェクト | ||
| + | * HTMLタグをドリトル内で直接扱うことができるオブジェクトです。 | ||
| + | * 角括弧(<> | ||
| + | * HTMLオブジェクトを使うことで、動的な画面更新が可能な双方向コンテンツを簡潔に記述できます。 | ||
| + | * WebAPIオブジェクトと組み合わせることで、サーバとの通信を行う双方向コンテンツを作成できます。 | ||
| + | ## HTMLオブジェクトの基本 | ||
| + | * HTMLタグは数値や文字列と同じように、角括弧(<> | ||
| + | * (例)順序なしリスト(ul)タグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)入力欄(input)タグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)ボタン(button)タグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * HTMLオブジェクトには、それぞれの要素に応じた様々なメソッドが用意されています。 | ||
| + | * 生成されたHTMLタグはオブジェクトであり、プロパティやメソッドの定義はタートルから作った「かめた」と同様に行えます。 | ||
| + | |||
| + | ## タグの属性設定 | ||
| + | * HTMLタグの属性、プロパティ、CSSには2つの設定方法があります。 | ||
| + | * 1つ目は、タグに直接記述する方法です。 | ||
| + | * (例)右寄せを指定したpタグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)枠線を持つテーブルを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)idを指定したpタグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)CSSのbackground-colorを指定したspanタグを生成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | * 2つ目は、タグを生成した後にメソッド呼び出しで設定する方法です。 | ||
| + | * (例)idを設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)属性の値を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | * 以下は、さまざまな属性を設定する例です。 | ||
| + | * (例)typeを指定したリストを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)styleを指定して直接スタイルを設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)入力フィールドのタイプを指定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)日付入力フィールドを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)チェックボックスを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)スライダーを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)プレースホルダーを指定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)画像に代替テキスト(alt)を指定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)クラス名を指定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)CSSを指定します。 | ||
| + | * ここではCSSのbackground-colorにredを設定しています。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | ## 共通のメソッドと属性 | ||
| + | * **テキスト** : タグの内容のテキストを設定します。 | ||
| + | * (例)リスト項目(li)タグにテキストを設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **入れる** : divやulのような、他のタグを包括するようなタグに、他のタグをchildNodeとして追加するときに使用します。 | ||
| + | * (例)ulタグにliタグを追加します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)複数の要素を一度に追加します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **クリア** : 中身をすべて削除するときに使います。innerHTMLごと削除するので、childNodeもinnerTextも消えます。 | ||
| + | * (例)ulタグの内容をクリアします。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **動作** : イベントハンドラーで、このプロパティにブロックを代入しておくと、以下のイベントを検出したときに実行します。 | ||
| + | * inputのtypeが[" | ||
| + | * inputのそれ以外は値が変更されたら(onchange) | ||
| + | * それ以外のタグはクリックされたら | ||
| + | * (例)ボタンがクリックされたときの処理を定義します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)入力欄でエンターキーが押されたときの処理を定義します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)スライダーの値が変更されたときの処理を定義します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | 結果!(スライダー!値?) テキスト。 | ||
| + | | ||
| + | </ | ||
| + | * 動作は「動作設定」メソッドを使用することでも定義することができます。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | < | ||
| + | 」 動作設定。 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | /* * **innerHTML** : HTMLタグの内部コンテンツを設定・取得します。テキストだけでなくHTMLタグを含む内容も設定できます。 | ||
| + | * (例)innerHTML属性に文字列を設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)innerHTML属性を空にして内容をクリアします。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **appendTo** : 自分自身を引数で指定したHTMLタグの子要素として追加します。 | ||
| + | * (例)liタグをulタグに追加します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **append** : 引数で指定したHTMLタグを子要素として追加します。複数の要素を一度に追加することもできます。 | ||
| + | * (例)divタグに複数の要素を追加します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **style** : CSSスタイルを設定します。 | ||
| + | * (例)テキストの色を設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)要素の表示・非表示を切り替えます。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | ページ1: | ||
| + | ページ2: | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **element** : HTMLタグの実際の要素にアクセスするためのプロパティです。特にスタイルの詳細な設定に使用します。 | ||
| + | * (例)背景色を設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | */ | ||
| + | |||
| + | |||
| + | * **削除する** : 要素を削除します。 | ||
| + | * (例)要素を削除します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | /* | ||
| + | * **src** : img要素やiframe要素のURLを設定します。 | ||
| + | * (例)img要素に画像URLを設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)iframe要素にURLを設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **checked** : チェックボックスの状態を取得します。 | ||
| + | * (例)チェックボックスの状態を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | 結果:テキスト=(チェックボックス:checked != undefined)。 | ||
| + | | ||
| + | </ | ||
| + | */ | ||
| + | |||
| + | ## idセレクタによる要素の取得 | ||
| + | * `#id` 形式を使ってHTML要素を取得できます。 | ||
| + | * 現在、`# | ||
| + | * (例)idを指定して要素を取得します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ## フォーム要素のメソッドと属性 | ||
| + | * **値?** : フォーム要素の値を取得します(input, | ||
| + | * (例)入力欄の値を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | * **値** : フォーム要素の値を設定します。 | ||
| + | * (例)入力欄に値を設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | /* | ||
| + | * **value** : フォーム要素の値を取得・設定するための属性です。 | ||
| + | * (例)入力欄の値を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)入力欄の値を設定します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)日付入力欄の値を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)スライダーの値を取得します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | */ | ||
| + | /* | ||
| + | ## アラートを表示する | ||
| + | * `alert` メソッドを使用して、アラートダイアログを表示できます。 | ||
| + | * (例)ボタンをクリックしてアラートを表示します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | !(" | ||
| + | | ||
| + | </ | ||
| + | |||
| + | */ | ||
| + | |||
| + | ## WebAPIとの連携 | ||
| + | * HTMLオブジェクトはWebAPIオブジェクトと組み合わせることで、サーバとの通信を行う双方向コンテンツを作成できます。 | ||
| + | * 以下は、簡単なチャットプログラムの例です。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | メッセージボード!クリア。 | ||
| + | メッセージ配列!「|内容| | ||
| + | | ||
| + | | ||
| + | 」それぞれ実行。 | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | 送信_wa.内容=名前+" | ||
| + | 送信_wa!読む。 | ||
| + | メッセージ表示!(受信_wa!読む)実行。 | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * このプログラムでは、サーバ側で動作するPHPプログラム(read.phpとwrite.php)とクライアント側で動作するドリトルプログラムを組み合わせています。 | ||
| + | * サーバ側のPHPプログラムは以下のようになります。 | ||
| + | |||
| + | ```php | ||
| + | // | ||
| + | <?php | ||
| + | | ||
| + | | ||
| + | ?> | ||
| + | |||
| + | // | ||
| + | <?php | ||
| + | | ||
| + | echo json_encode($message); | ||
| + | ?> | ||
| + | ``` | ||
| + | |||
| + | ## よく使われるHTMLタグ | ||
| + | * ドリトルでは多くのHTMLタグが使用できます。以下はよく使われるタグの例です。 | ||
| + | |||
| + | * **ul, li** : 順序なしリストとリスト項目を表示します。 | ||
| + | * (例)順序なしリストを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **ol, li** : 順序ありリストとリスト項目を表示します。 | ||
| + | * (例)順序ありリストを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **input** : 入力欄を表示します。 | ||
| + | * (例)入力欄を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)プレースホルダーを指定した入力欄を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)数値入力欄を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | * (例)日付入力欄を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **datalist, option** : 入力欄の選択肢リストを作成します。 | ||
| + | * (例)スライダーと選択肢リストを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | < | ||
| + | <option value=" | ||
| + | <option value=" | ||
| + | <option value=" | ||
| + | <option value=" | ||
| + | <option value=" | ||
| + | <option value=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * **textarea** : 複数行の入力欄を表示します。 | ||
| + | * (例)テキストエリアを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **button** : ボタンを表示します。 | ||
| + | * (例)ボタンを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **iframe** : 外部ページをフレーム内に表示します。 | ||
| + | * (例)iframeタグでWebページを表示します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **div** : 汎用的なブロック要素を作成します。 | ||
| + | * (例)divタグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **span** : 汎用的なインライン要素を作成します。 | ||
| + | * (例)spanタグを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **p** : 段落を表示します。 | ||
| + | * (例)段落を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **h1, h2, h3, ...** : 見出しを表示します。 | ||
| + | * (例)見出しを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **img** : 画像を表示します。 | ||
| + | * (例)画像を表示します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | * (例)代替テキストとクラスを指定した画像を表示します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **table, tr, th, td** : 表を作成します。 | ||
| + | * (例)2行2列の表を作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | <tr> | ||
| + | < | ||
| + | < | ||
| + | </tr> | ||
| + | <tr> | ||
| + | < | ||
| + | < | ||
| + | </tr> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * **a** : リンクを作成します。 | ||
| + | * (例)リンクを作成します。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * **br** : 改行を作成します。 | ||
| + | * (例)改行を挿入します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | * **hr** : 水平線を作成します。 | ||
| + | * (例)水平線を挿入します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | * **label** : フォーム要素のラベルを作成します。 | ||
| + | * (例)ラベルを作成します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ## スタイル設定 | ||
| + | * style要素を使うことで、HTMLタグのスタイルをまとめて設定できます。 | ||
| + | * (例)タグ名、id, | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | # | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | /* | ||
| + | * (例)ドット絵用のスタイルを設定します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | * (例)ポップアップウィンドウ用のスタイルを設定します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | position: absolute; | ||
| + | top: 50%; | ||
| + | left: 50%; | ||
| + | border: 1px solid; | ||
| + | transform: translate(-50%, | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | */ | ||
| + | |||
| + | ## 実践的な例:メッセージボード | ||
| + | * 以下は、ボタンをクリックするとメッセージを追加表示するシンプルなメッセージボードの例です。 | ||
| + | * 「メッセージボード」として定義したulタグに対して、あとからliタグを生成して追加します。 | ||
| + | * 「送信ボタン」がクリックされたら、入力欄に記入された文字列を取得しています。 | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | メッセージ=< | ||
| + | メッセージボード!(メッセージ)入れる。 | ||
| + | 入力欄!("" | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ## 実践的な例:電卓 | ||
| + | * 以下は、入力された数値をもとに計算を行う電卓アプリの例です。 | ||
| + | * 「足す」ボタンがクリックされたら、入力1・入力2から値を取得して、計算結果を「結果」に表示しています。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | 入力1=< | ||
| + | < | ||
| + | < | ||
| + | 入力2=< | ||
| + | < | ||
| + | 結果=< | ||
| + | 足す=< | ||
| + | 足す:動作=「 | ||
| + | 結果!((入力1!値?)+(入力2!値?))テキスト。 | ||
| + | 」。 | ||
| + | </ | ||
| + | |||
| + | * 以下は、「引く」ボタンを追加する例です。 | ||
| + | * 同じように、「かける」「割る」ボタンを簡単に追加することができます。 | ||
| + | |||
| + | < | ||
| + | 引く=< | ||
| + | 引く:動作=「 | ||
| + | 結果!((入力1!値?)-(入力2!値?))テキスト。 | ||
| + | 」。 | ||
| + | </ | ||
| + | |||
| + | ## 実践的な例:くじ引き | ||
| + | * 以下は、乱数を使ったくじ引きの例です。 | ||
| + | * 1以上、5以下の値を生成し、1が出たときだけ「あたり」、それ以外が出たら「はずれ」を表示します。 | ||
| + | |||
| + | < | ||
| + | < | ||
| + | ボタン=< | ||
| + | 結果表示=< | ||
| + | |||
| + | くじ箱=配列!" | ||
| + | |||
| + | ボタン:動作=「 | ||
| + | 結果=くじ箱!(乱数(5)) 読む。 | ||
| + | 結果表示!(結果) テキスト。 | ||
| + | 」。 | ||
| + | </ | ||
