
JavaScriptの「document.getElementById().textContent」という文章について質問が有ります。
この文章で「document.getElementById()」の部分は、
documentオブジェクトの中のgetElementById()メソッドを利用しているというのは分かります。
しかし、続けてtextContentプロパティが記述されていますが、これはどこのプロパティなのでしょうか?
documentオブジェクトの中に有るプロパティなのでしょうか?
私の考えでは、上の表記は厳密には
let a = document.getElementById("id名");
a.textContent;
であり、aにはid名で指定された要素が格納されますよね?
そして要素が格納されたaも実はオブジェクトであり、そのオブジェクトの中にtextContentプロパティが
JavaScriptでは標準で搭載さている、ということでしょうか?
またもう一つ質問で、
通常オブジェクトの中のプロパティやメソッドを参照する(呼び出す)時は、
オブジェクト名.プロパティ名
オブジェクト名.メソッド名()
と書きますが、上のdocument.getElementById().textContentの様に他にも
オブジェクト名.メソッド名().プロパティ名
と続けて記述する場合も良く見ます。
こういう表記を見かけて場合も厳密には
let 変数 = オブジェクト名.メソッド名();
変数.プロパティ名;
であり、最後のプロパティは別のオブジェクトに格納されたプロパティ
という解釈で宜しいでしょうか?
詳しい方がいましたらお手数ですが
ご教授お願いいたします。
No.2ベストアンサー
- 回答日時:
メソッドチェーンと呼ばれる書き方ですね。
オブジェクトを返すメソッド(またはプロパティ)を、ドット表記で連続して記載することで、
左側から順番に「オブジェクトのメソッドを呼び出して戻り値のオブジェクトで置き換え」を繰り返します。
ご提示のプログラムの場合ですと、実行順序は以下のようになります。
var x = window.document.getElementById("foo").textContent;
↓
「メンバーへのアクセス」のドット表記は、演算子としては左から右の順に処理される
https://developer.mozilla.org/ja/docs/Web/JavaSc …
var x = ((window.document).getElementById("foo")).textContent;
↓
Window 型の document プロパティは Document 型のオブジェクトを返す
https://developer.mozilla.org/ja/docs/Web/API/Wi …
var x = ((Document型のオブジェクト).getElementById("foo")).textContent;
↓
Document 型の getElementById() メソッドは Element 型のオブジェクトを返す
https://developer.mozilla.org/ja/docs/Web/API/Do …
var x = (Element型のオブジェクト).textContent;
↓
Element(の親である Node)型の textContent プロパティは 文字列 を返す
https://developer.mozilla.org/ja/docs/Web/API/No …
var x = 文字列;
↓
変数 x に入る値は「現在のウィンドウ(window)内の、文書構造(document)から、特定の要素を探し出し(getElementById)、その要素中のテキスト表現(textContent)」の文字列
非常に分かりやすいご説明、有難うございました。
成程、メソッドチェーンと呼ばれる書き方が有るんですね。
初めて知りました。引き続き頑張りたいと思います。
No.3
- 回答日時:
>私の考えでは、上の表記は厳密には
>let a = document.getElementById("id名");
>a.textContent;
>であり、aにはid名で指定された要素が格納されますよね?
>そして要素が格納されたaも実はオブジェクトであり、
>そのオブジェクトの中にtextContentプロパティが
>JavaScriptでは標準で搭載さている、ということでしょうか?
document.getElementById() が返すのはオブジェクトの「参照」、
aに代入されるのも「参照」で、オブジェクトそのものではありません。
JavaScriptの「.」はオブジェクトの参照を介してメソッドやプロパティ
にアクセスするためのものです。
JavaScriptではオブジェクトそのものが変数に代入されることはありません。
let a={};
let b=a;
とすると、aとbは「ひとつの」空の辞書を指します。
No.1
- 回答日時:
一般的には、「オブジェクト.メソッド名()」や、「オブジェクト.プロパティ名」は、オブジェクトです。
(下記注)あなたは、「オブジェクト名.メソッド名()」とお書きですが、「変数名を書くのが本来」と思っているのでしたら、それは間違いです。
ドットの前には、「オブジェクト」を書くので、オブジェクトが代入された変数名でもいいし、オブジェクトを返す式でもいいです。
ということで、「厳密には、~~」とお書きの記述は厳密でも何でもなく、「そういう書き方も出来る」ということだけです。
let a = x + y + z; と書くか、let w = x + y; let a = w + z; と書くかの違いとちょうど同じです。
document.getElementById().textContent がわかりにくければ、(document.getElementById()).textContent と括弧が付いていると思えば良いです。
注:JavaScriptだと数値や文字列はオブジェクトじゃないので、オブジェクトじゃなくてそういう基本型の値を返すこともありますが。
>一般的には、「オブジェクト.メソッド名()」や、「オブジェクト.プロパティ名」は、オブジェクトです。
成程、だから連鎖させて書くことが出来るんですね。
ご教授、有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Csvファイルの最終行を取得する構文はこれであっていますか?オブジェクトは、このプロパティまたはメソ 3 2022/12/26 14:38
- Visual Basic(VBA) クラス デフォルトプロパティの作り方 1 2022/10/23 11:41
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Visual Basic(VBA) <excel vba>selenium basicのWebDriverの自動更新のエラーについて 1 2022/10/01 17:07
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- JavaScript オブジェクトから任意のプロパティを全て抽出する一番簡単な方法 1 2023/08/09 21:13
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
出発駅A、到着駅Bを選択すると...
-
フォームが空欄の時にフォーム...
-
ブラウザの横幅に応じてとある...
-
jsで、配列内の文章を改行する...
-
タグを教えてください。
-
セレクトを全て選択されていな...
-
変数宣言と初期値代入の場所に...
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
javaScriptでグローバル変数に...
-
タブブラウザで focus() を実...
-
Shell.ApplicationでのIEオブ...
-
Googleカレンダーリスト表示
-
チェックボックスを認識・不認...
-
一定時間経つと画像を消す方法
-
関数の呼び出し時の引数につい...
-
Ajaxのプログラムをオブジェク...
-
event.srcElementの動的設定
-
VBSを学ぶ前に、、、
-
JavaScriptの正規表現について
-
CSSのクラスを動的に変更 classで
-
javascritの(e)または(event)に...
-
画面間でのJavaScrip...
-
div で既存の <pre> を囲む方
-
クラス デフォルトプロパティの...
-
ブラウザが開いているかどうか
-
フォルダ内のファイル名を取得...
おすすめ情報