Javascript

Javascript
100問 • 2年前
  • 谷峻輔
  • 通報

    問題一覧

  • 1

    Javascriptは何わたしか?

    オブジェクトは参照渡し。 プリミティブの場合は値渡しで、コピーして渡すということ

  • 2

    aとbの値は?

    プリミティブデータは値渡し aは5 bは3

  • 3

    Webページ描画時に、JavaScript はどういう順序で処理されていくか?

    windowオブジェクト生成→Documentオブジェクトを生成処理を開始 HTMLを記述順に構文解析(上から順に)開始 ツリー形式で読み込んでいく感じ <script>要素をみつけた時点で、そのまま構文解析し、エラーがなければコードを同期実行 HTMLパース完了(レンダリングが開始される) 外部リソース読み込み(CSSや画像等) ユーザー定義イベントなどのイベント発生 https://qiita.com/tanaShoe/items/f2d8f3d2ae034a094f99

  • 4

    この例だとスクリプトが読み込まれるタイミングは?

    上から順にHTMLが開始されたタイミングとなり、 body要素の最後に位置するため、body要素が全て読み込まれたあとに実行することができます。

  • 5

    要素内のテキストは、DOM上ではどう扱われているか

    テキストノード(#text)として扱われる #textの中に“テキスト値“が入る

  • 6

    取得したテキストノードに対してjavascriptで値を設定する場合はどうやるか?

    nodeValueプロパティを使う var textnode = children.item(0); //テキストノードを取得する console.log(textnode.nodeValue); textnode.nodeValue = "書き換えました";

  • 7

    DOMとはなにか?

    DOMは、「Document Object Model、つまりドキュメントを物として扱うモデル」のことを言う。 DOMツリーという階層構造を持つ。 javascriptで、DOMを操作できるようにあらゆるApiが設けられている。

  • 8

    メモ!DOMにおけるオブジェクトの関係性はこう! ちなみにHTMLDocumentクラスはいまは非推奨となっているので無視!

    おぼえろー

  • 9

    EventTargetクラスの説明をせよ

    インタフェースで、イベントをサポートするための継承する必要があるクラス addEventListenerやdispatchEventなどのメソッドをサポートする

  • 10

    Nodeクラスについて説明せよ

    インタフェース DOMノードの基底として機能する。 次のノードや子要素を表すなど、ツリー上の位置関係に関するプロパティや ノードの追加、削除を行うなどのメソッドを提供する

  • 11

    ノードオブジェクトの種類をおおまかに3つあげよ

    textノード、commentノード、Elementノード

  • 12

    Elementオブジェクトについて説明せよ

    DOM要素のベースクラス 要素ノードの検索機能や、その要素への変更などを提供する。 また子要素ノードの操作などツリー操作の機能もある HTMLに限らず、XMLやSVGの要素の基底クラスとしても利用される

  • 13

    HTMLElementについて説明せよ

    すべてのHTML要素のベースクラス

  • 14

    Windowオブジェクトとは?

    JavaScriptコードが動作しているWebブラウザのウィンドウまたはフレームを表すオブジェクト ウィンドウに対する操作などの機能がある。 Nodeは継承してない

  • 15

    Documentオブジェクトの説明せよ

    ブラウザーに飲み込まれたWebページを示す。 DOMツリーをもつ。 テキストノードやElement、EventなどあらゆるDOMにかかわるオブジェクトはdocumentから生成できる。 また、クエリセレクタなどの要素を特定する機能もある

  • 16

    テキストノードやコメントノードの値の書きかえはどうやってやるか

    NodeクラスのnodeValueプロパティを利用する。 console.log(textnode.nodeValue); textnode.nodeValue = "書き換えました"; https://developer.mozilla.org/ja/docs/Web/API/Node/nodeValue elementには利用できなさそう

  • 17

    テキストノードを削除する方法はどうするか?

    テキストノードはElementクラスを継承してないため、remove()メソッドで自身を削除できないので、 ノードクラスにあるremoveChildメソッドを使って親側から消すしかない var p = document.getElementById('aaaaa'); var children = p.childNodes; var textnode = children[0]; //テキストノード p.removeChild(textnode);

  • 18

    要素を削除するメソッドはなにがあるか

    Element.remove Node.removeChild

  • 19

    要素を作成するにはどうしたらよいか

    作成系はだいだいDocumentオブジェクト がもってる var newelement = document.createElement('p'); console.log(newelement); ちなテキストノードをつくるのはこう!! var newtextnode = document.createTextNode("新しいテキストノード");

  • 20

    要素をツリーに追加する場合は? 最後に追加するときと 位置指定するしたい場合の二通りかけ

    ツリーの操作はノードのメソッドを使う bodyの最後として追加する document.body.appendChild(newelement); insertBeforeを使うととある要素の前に位置指定できる var p = document.getElementById('aaaaa'); p.insertBefore(a, p.firstChild); pの先頭(firstChiledの前)に要素aを追加!

  • 21

    あるノードの兄弟ノードを取得するには?

    これもノードクラスを利用する previousElementSiblingとnextElementSiblingプロパティを使う var aaa = document.getElementById('aaa'); var prev = aaa.previousElementSibling; var next = aaa.nextElementSibling;

  • 22

    兄弟ノードを取得する際 previousSiblingとnextSiblingを使ったときの問題点は? その問題を回避するメソッドはなにか

    空白や改行もテキストノードとされるため タグの次に改行があれば、 テキストノードがとれてしまう。 previousElementSiblingとnextElementSiblingで回避できる

  • 23

    もともとあった子ノードを除去し、その位置に新しいノードを挿入したい場合は?

    p.replaceChild(newnode, p.firstChild); 子ノードのなかで、第一引数は置き換えたいノード、第2引数は置き換え元の子ノード ノードのもつメソッド

  • 24

    ノードをコピーするには? 引数の説明もせよ

    clonenode var newnode = p.cloneNode(true); 引数にtrueを指定すると、子ノードも全てコピーします。対して、falseを指定すると、そのノードしかコピーしません。つまり、子ノードは全くない状態で新しいノードが作られます。

  • 25

    table要素をJavaScriptで扱う上での注意事項は

    HTMLで定義されないけど、暗黙的に table要素直下にtbody要素が追加されていること

  • 26

    開発する上で要素のメソッドを探す場合はどのようにやればいいか

    該当の要素のメソッドを確認し、 なければノードやElement、htmlelementなど継承元なメソッドを確認する

  • 27

    ある要素に対して、属性を設定するにはどうするか?

    要素に対する操作はelementオブジェクト img.getAttribute("属性名") セットはこう! img.setAttribute("属性名", "zzzz");

  • 28

    要素からスタイルにアクセスし直接操作するには?

    要素からstyleプロパティにアクセスし、設定する p.style.border = "10px solid black"; CSSを利用しない直接的なスタイル設定の方法 以下と同等 <p style="border: 10px solid black;">      ↑オブジェクトの書き方と同じなので、プロパティとしてアクセスできるのも納得がいく

  • 29

    form要素を取得する方法をあげよ セレクタや検索機能を使わない方法で。

    document.formsプロパティがあるので、それを使う HtmlCollectionオブジェクトがかえってくる 他にもdocument.imagesとかanchors(a要素かつname属性をもつ) とかlinksとかもある <form id="form1" action="?"> </form> <script type="text/javascript"> var form = document.forms.item(0); console.log(form); </script>

  • 30

    HTMLCollectionオブジェクトについて説明せよ 要素内にアクセスする方法を二つ挙げよ

    要素の汎用的な集合を表す item(index)メソッドでは、インデックスに応じて要素を返す namedItem(Key)メソッドでは、idまたはname属性を指定して要素をかえす 省略で以下のようなプロパティ形式の書き方ができる var form = document.forms["form1"]; もちろん、これは次のように書いても同じことです。 var form = document.forms.form1;

  • 31

    Objectクラスとはなにか?

    すべてのオブジェクトの原型

  • 32

    objectクラスで、文字列値を返すメソッドはなにか? 暗黙的にどのような場合に呼ばれるか? カスタムオブジェクトで上書きされてない場合、デフォルトでは何がかえるか? 上書きしたら利用するにはどうするか?

    Object.toString() そのオブジェクトの文字列情報を返す オブジェクトが文字列値として表される場面や、文字列が期待される構文で参照されたときに自動的に呼び出されます (console.logでの出力の際に自動で呼ばれることがある(カスタムオブジェクトの場合) オブジェクトと文字列を結合する際に呼ばれたりする) このメソッドがカスタムオブジェクト中で上書きされていない場合、 toString() は "[object type]" という文字列を返します (type は そのオブジェクトの型)。 const o = new Object(); o.toString(); // [object Object] を返す 上書きで使うには、プロトタイプを上書きする。 function Dog(name) { this.name = name; } const dog1 = new Dog('Gabby'); Dog.prototype.toString = function dogToString() { return `${this.name}`; }; console.log(dog1); // Expected output: "Gabby" https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

  • 33

    objectクラスで、プリミティブ値を返すメソッドはなにか? 暗黙的にどのような場合に呼ばれるか?

    object.valueOf() プリミティブな値が期待される場面にオブジェクトが出くわしたとき JavaScript が自動的に実行します。 計算の時とかに呼び出される。

  • 34

    function MyNumberType(n) { this.number = n; } MyNumberType.prototype.valueOf = function () { return this.number; }; const object1 = new MyNumberType(4); console.log(object1 + 3); 何が出力されてくるか? またValueOfを上書きしなかった場合は何が出力されるか

    7が出力される 上書きしてない場合は "[object Object]3" [object Object]が上書きしてない場合のデフォルトで返される

  • 35

    objectへのアクセス方法は? var obj = { "添字1":null }; の場合は? var obj = { aaaaa:null }; の場合は?

    キーが文字列の場合は ブランケット記法のみ obj["添字1"] キーが変数の場合は ドット記法とブランケット記法どっちも使える obj.aaaaa

  • 36

    プロトタイプとはなにか? プロトタイプを取得するメソッドはなにか?

    プロトタイプは、JavaScript オブジェクトの継承を実現する仕組みで、 オブジェクトとして表現されている。 取得するにはこう Object.getPrototypeOf(myObject); // Object { }

  • 37

    プロトタイプチェーンとはなにか オブジェクトはどのような手順で継承元のプロパティを参照するか

    要するに継承のチェーンといえる。 オブジェクト自身にプロパティが見つからない場合は、プロトタイプを検索してプロパティを探します。 なければ、そのプロトタイプのプロトタイプを検索する。 というようにプロトタイプチェーンを遡っていく。

  • 38

    Object.createメソッドの説明をせよ

    第一引数にプロトタイプ 第二引数に初期化用パラメータを設定 でオブジェクトを作成できる。 オブジェクトリテラルで定義するよりも、既存の情報を利用してオブジェクト作成したい場合に利用する

  • 39

    オブジェクトのkeyやプロパティについて繰り返し処理するにはどうするか

    for inを利用する for (const property in object) 上記の場合はpropertyにキーやプロパティが設定されて繰り返し処理が行われる

  • 40

    オブジェクトの値や配列を繰り返し処理するには?

    for ofを利用する。 const array1 = ['a', 'b', 'c']; for (const element of array1) { console.log(element); } // Expected output: "a" // Expected output: "b" // Expected output: "c"

  • 41

    オブジェクトの任意のプロパティを削除するにはどうするか?

    delete文を利用する delete obj.aaa;

  • 42

    関数宣言 の評価タイミングは? function MyFunc_B (argument1 , argument2){ var v = argument1 - argument2; return v; } こんなやつが関数宣言

    プログラムが実行される前に評価される。 スコープ内にある場合はそのスコープに入った瞬間に評価される また、

  • 43

    関数リテラルを使用するなど、関数宣言でなく関数を動的に作成した場合の実行タイミングはなにか? こんなかんじ 関数リテラルで変数にいれている var func_obj = function (argument1 , argument2){ var v = argument1 + argument2; return v; }

    関数宣言と違って、関数リテラルが、先に評価される事はありません。   プログラムの実行順番と同様のタイミングで評価される

  • 44

    Functionクラス内のプロパティで、引数を参照するプロパティはなにか?

    argumentsプロパティを利用すると渡された情報を確認できる function MyFunc (){ // ------------------------------------------------------------ // 引数の総数を取得する // ------------------------------------------------------------ var num = arguments.length; // ------------------------------------------------------------ // 引数から渡されたすべてのデータを順番に取得する // ------------------------------------------------------------ var i; for(i=0;i < num;i++){ // 引数から渡されたデータを取得する var data = arguments[i]; console.log("id:" + i + " data:" + data); } }

  • 45

    HTML要素に対して Boolean型の属性を追加すると、値は何に設定されるか

    trueになる。 属性が追加せれてればtrue扱い 属性追加しないとfalse

  • 46

    export とdefault exportどう使い分ける?

    default exportは各ファイル一つまでしかつかえないので、コンポーネントとか大きいものに対して使う。あと束縛する名前はインポート側に委ねられる export は細かいものをたくさんインポートさせたいとか、部品だけインポートさせたい時に使う そのままの名前でインポートできる。

  • 47

    グラフや図を作成する場合、何を利用するか

    canvasタグをHTMLで定義し、 JavaScriptで描画設定する

  • 48

    canvasタグの属性はなにがあるか

    widthとheight属性

  • 49

    canvasタグ内にいれたコンテンツはどのように扱われるか?

    代替コンテンツとして扱われる。 つまり、canvasに対応してないブラウザでは、代替としてそのコンテンツが表示されるようになっている。 対応している場合は表示されない

  • 50

    canvasについてJs側でブラウザが対応してるかどうか確認するにはどうするか?

    canvas要素のgetContextメソッドが存在するかを調べることで存在確認ができる。 var canvas = document.getElementById("tutorial"); if (canvas.getContext) { var ctx = canvas.getContext("2d"); // 描画するコードをここに } else { // キャンバスに未対応の場合のコードをここに }

  • 51

    ページ読み込み時にcanvasの描画設定を行うには?

    loadイベントなどを利用して、描画設定を行う load イベントは、ページ全体が、スタイルシートや画像などのすべての依存するリソースを含めて読み込まれたときに発生します。

  • 52

    canvasで塗りつぶされた四角形をかくには?

    fillStyleプロパティで色を定義(デフォルトは黒)して、 fillRectメソッドで開始座標と横幅、縦幅を指定する。 function draw() { var canvas = document.getElementById("canvas"); if (canvas.getContext) { var ctx = canvas.getContext("2d"); ctx.fillStyle = "rgb(200, 0, 0)"; ctx.fillRect(10, 10, 50, 50); ctx.fillStyle = "rgba(0, 0, 200, 0.5)"; ctx.fillRect(30, 30, 50, 50); } }

  • 53

    canvasで矩形を描くメソッドはなにがあるか

    fillRect(x, y, width, height) 塗りつぶされた矩形を描きます。 strokeRect(x, y, width, height) 矩形の輪郭を描きます。 clearRect(x, y, width, height) 指定された領域を消去し、完全な透明にします。

  • 54

    これをキャンバスでかくには?

    こんなかんじ var ctx = canvas.getContext("2d"); //くろでかく ctx.fillRect(25, 25, 100, 100); //クリアする ctx.clearRect(45, 45, 60, 60); //線をかく ctx.strokeRect(50, 50, 50, 50);

  • 55

    キャンバスで線で図形を作成していくには何を利用すればいいか

    Pathを利用する。

  • 56

    キャンバスでパスを利用開始する場合どのようにコーディングするか?

    beginPathメソッドを利用し、移動する。 ctx.beginPath(); ctx.moveTo(75, 50);

  • 57

    キャンバスでmoveToした後に三角形を作るには? 塗りつぶすには?

    lineToメソッドをよんで、MoveToした位置から指定した座標までパスを描く。 ちなみにパスをかいただけでは、画面には線が描画されるわけではない。 三角形ならlineToメソッドを2回行った後に、closePath()を呼び出すと、現在位置からパスの開始地点(beginPathしたとこ)につなげれる 実際の描画には、stroke()メソッドを呼び出す必要がある。 塗りつぶすにはclosePath()の後にfill()メソッドを使うとできる(closePath()自体、省略してもうまくいく)。 ctx.beginPath(); ctx.moveTo(20,20); //最初の点の場所 ctx.lineTo(100,150); //2番目の点の場所 ctx.lineTo(10,150); //3番目の点の場所 ctx.closePath(); //三角形の最後の線 closeさせる

  • 58

    この図形を描くには?

    var ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(75, 50); ctx.lineTo(100, 75); ctx.lineTo(100, 25); ctx.fill();

  • 59

    canvasで円や円弧を作成するには? 二つあげよ

    arcメソッドで中心位置と半径を指定する。  startAngleとendAngleは円弧を作るための引数で、ラジアンが単位。 ここはちょいむず arcToメソッドでは、 パスに関係するメソッドで、これもむずいが、 直前の座標から、座標から2点を指定し、そこへの直線と、指定した2点を円で描画するイメージ 角を丸めたい時に使えると思う arc(x, y, radius, startAngle, endAngle, counterclockwise) (x, y) を中心の位置、 radius を半径、 startAngle を開始角度、 endAngle を終了角度、 counterclockwise を方向(既定では時計回り)とする円弧を描きます。 arcTo(x1, y1, x2, y2, radius) 指定した制御点と半径によって円弧を描き、その前の描画位置と直線で接続します

  • 60

    パスってどういう概念か

    キャンバスに対して、点を追加していって繋いで描画するイメージ

  • 61

    arcの引数のstartAngleとendAngleは 図の最初のやつはどう設定するか?

    ラジアンだとよくわからんので、角度の度数で指定するとわかりやすい 度数×Math.PI/180を指定するとよい 0度は最も左の位置を指しているので 180×Math.PI/180 を開始位置として 0×Math.PI/180 を終了位置にすると一番左の図形がかける

  • 62

    ハートとか💬マークみたいなのをキャンバスで作るにはどうすればよいか

    ベジェ曲線てを使うらしい 難しいから、スルー

  • 63

    プライベート変数を扱うにはどうするか? 命名規則として対応する場合 実際の機能として対応する場合をあげよ

    命名規則で対応するならアンダースコアをつける。 機能で対応するなら weakMapというValueがnullになるとキーごと削除されるマップを利用する方法があるらしい https://qiita.com/ysm001/items/04a7f3dc4795e84eee32

  • 64

    HTMLTableElement 特有のプロパティとして一つあげよ

    rows tr要素 HTMLTableRowElement が全て入ってる <table id="aaaaa"> <tr> <td>test1</td> <td>test2</td> </tr> <tr> <td>test3</td> <td>test4</td> </tr> </table>

  • 65

    HTMLTableRowElementの特有のプロパティを一つあげよ

    cells そのtr要素が持つtd要素(とth要素)のHTMLCollectionです。

  • 66

    title要素やscript要素の特有のプロパティでその要素の中身のテキストノードを全てを返すものはなにか?

    textプロパティ  書き換えも可能

  • 67

    属性を取得、設定するメソッドはなにがあるか

    ノードがもつ getAttributeとsetAttribute img.getAttribute("src") 取得する属性の名前を指定 img.setAttribute("alt", "zzzz"); セットはこう

  • 68

    要素に直接設定されたスタイルを取得するのは何のプロパティか? また、なんのオブジェクトがかえってくるか?

    HtmlElementのプロパティの styleを利用する。 CSSStyleDeclarationオブジェクトがかえる。

  • 69

    CSSStyleDeclarationを活用すると何ができるか?

    プロパティにborderなどのスタイル属性をもつ 設定もできる。 var p = document.getElementsByTagName('p').item(0); p.style.border = "10px solid black";

  • 70

    計算後のCSSstlyledeclationを取得するにはどうするか?

    windowオブジェクトのもつgetComputedStyleメソッドを利用する。 var cssStyleDeclaration = getComputedStyle( element ) ;

  • 71

    HTMLFormElement特有のプロパティを一つ上げよ 説明もせよ

    elementsというプロパティで HtmlCollectionを返す フォーム内の要素が入ってる。 select要素とか、input要素とか、textarea要素とか、button要素などが入ってる form要素は、入力フォームを作成する要素です。 この要素内に、フォームを構成する各部品を配置していきます。 フォームの各部品は、form要素で囲んでまとまめるのが一般的ですが、HTML5から、部品をform要素の外に出すことも可能となりました。 また、データの送信を行わない場合はform要素自体が不要です。

  • 72

    input要素 HTMLInputElement 特有のプロパティを4つあげよ

    formプロパティで、フォーム要素を返す disabledプロパティでdisabled属性を返す valueプロパティで、value属性を返す typeプロパティで、type属性を返す

  • 73

    HtmlFormElementが持つメソッドはなにか? 二つ挙げよ

    submitとresetがある。 form.submit();

  • 74

    フォームのsubmitやresetを画面操作のみでどうやって実行されるか?

    inputタグのタイプでsubmitを指定する 画面にはValueの値のラベルのボタンが表示される <input type=“submit” value=“送信“> これを定義するとボタンを押下した時に、form.submit()を実行する。

  • 75

    formのsubmitが実行されるとどうなるか?

    formについてはここ アクション属性で指定したURLやPHPに対し、GetやPostメソッドを行える。 GETだとUrlにフォーム要素の情報を付与してGetリクエストを送る! <form action=“http://www.google.com”> </form>

  • 76

    formタグのgetメソッド、postメソッドの特徴を説明せよ

    urlにパラメータを付与するのはgetで、postはリクエストの中にパラメータを入れるので、丸見えにはならない。 戻るボタンで元の値が復元されるのはget 復元されないのはpost <form method="GET" action="http://example.jp/article"> <label>題名:<input type="text" id="title" name="title"></label> <input type="submit" name="submit" value="検索"> </form> <form method="POST" action="http://example.jp/article"> <div><label>題名:<input type="text" id="title" name="title"></label></div> <div><label>著者:<input type="text" id="author" name="author"></label></div> <input type="submit" name="submit" value="検索"> </form>

  • 77

    特有のプロパティあるある

    特有の属性がある場合は、プロパティも用意されてる

  • 78

    HTMLInputElementのメソッドを3つあげよ

    blur、focus、click すべて引数はありません。 blurは、そのコントロールからフォーカスを外し、 逆にfocusは与えます。 clickは、そのコントロールをクリックしたことにします。 参考 ユーザがクリックするか、キーボードで Tab キーを使うとき、要素はフォーカスを受け取ります

  • 79

    inputが入力ボックス(typeが"text", "password", "search", "url"などの場合)の特有のプロパティを二つあげよ

    readOnlyプロパティ <input readonly type="text" value="testtest"> select()メソッド 入力ボックスの文字を全て選択状態にするというもの

  • 80

    inputのタイプがチェックボックスやラジオボタンの場合特有のプロパティはなにか

    checkedプロパティ

  • 81

    HTMLSelectElement つまり選択ボックス特有のプロパティを二つあげよ

    optionsプロパティ optionsは、そのselectが持つoption要素のHTMLOptionsCollectionです。 selectedIndex selectedIndexは、今選択されているoptionの番号を取得するプロパティ

  • 82

    セレクト要素のメソッドを一つあげよ

    セレクト要素に対しオプションを追加 第二引数には追加するところの直後にあるノード(追加した後に新しいノードの後ろに来るノード)を指定 ↑ようするに指定したノードの前に挿入 select.add(option, select.options.item(0) );

  • 83

    nullとundifinedの違いをあげよ

    nullはリテラル undifinedはundifinedが入った変数である。→書き換えはできない変数 どちらもプリミティブ型

  • 84

    console.log(void 0); とはなにか?

    void 0と書くとundefinedになります。これは、新しく登場した演算子「void」の効果によるものです。voidは与えられた値を無視して常にundefinedを返すような演算子です。 undifinedは変数であるため、変数定義が可能であるため、上記の方法で確実にundifined を返すことができる。 var func = function(){ var undefined = 5; // このスコープ内で新しい変数undefinedを定義 console.log(undefined); // 5が表示される }; func(); 例えばvoid "Hey!"とかvoid nullとかでも問題はありません。慣例的にここには0を置くことが多いようです。0は1文字なので最短で書けることも理由のひとつと思われます。

  • 85

    メモ イベントのリファレンスはここ

    https://developer.mozilla.org/ja/docs/Web/Events

  • 86

    Elementクラスでサポートされるイベントで、要素の上にマウスをのっけた時のイベントとマウスが離れた時のイベントをあげよ

    mouseover mouseout 例 <p style="background-color:yellow" onmouseover="aaa();">test</p>

  • 87

    要素やノードに対してイベントにメソッドを登録するにはどうするか? また、削除するには? 第三引数はなにか

    EventTargetクラスのイベントリスナーを利用する var p = document.getElementById('abcd'); p.addEventListener('click', aaa, false); p.removeEventListener('click', aaa, false); 第3引数はuseCaptureで、trueだとキャプチャリングフェーズ falseだとバブリングフェーズでのイベント発火タイミングを指定する https://note.affi-sapo-sv.com/js-addeventlistener-usecapture.php

  • 88

    removeEventListenerの活用用途は?

    一回しかイベント処理をしたくないときに使う。 →古いやり方かも onceをつかえ addEventListenerメソッドは第3パラメータのオプション引数でonceをtrueにすると var p = document.getElementById('abcd'); // イベントリスナ var handler = function(){ console.log('foo!'); p.removeEventListener('click', handler, false); }; p.addEventListener('click', handler, false); onceを利用する例 btn.addEventListener('click', (e) => { e.preventDefault(); console.log("test"); }, { 'once': true // 1度だけのイベントリスナーにするオプション });

  • 89

    イベントバブリングの利用用途はなにか?

    複数の要素のイベントをまとめて監視する場合に利用する <div> <p onclick="console.log('p');">test</p> <p onclick="console.log('p');">test</p> <p onclick="console.log('p');">test</p> </div> こういう場合、3つのp要素がそれぞれイベント属性を持つのは無駄です。 <div onclick="console.log('p');"> <p>test</p> <p>test</p> <p>test</p> </div>

  • 90

    バブリングにおける3つのフェーズを説明せよ

    キャプチャリングフェーズ Windowからターゲットまで ターゲットフェーズ バブリングフェーズ ターゲットからWindowへ

  • 91

    親要素へのバブリングや子要素へのキャプチャリングを停止するためにはどうするか?

    バブリングなら子要素のイベント処理の中で、 キャプチャリングなら親要素のイベント処理の中で、 ストッププロパゲーションメソッドを呼び出す event.stopPropagation();

  • 92

    addEventListenerの第三引数でtrueを指定する方法で、最新の書き方はなにか?

    eventオブジェクトのプロパティを第3引数として渡す。 div.addEventListener('click', function(){ console.log('div'); }, { capture: true })

  • 93

    event.preventDefault()とはなにか?

    ブラウザにデフォルトで定義されているイベント処理を無効化する。 wheelイベント つまりマウスのスクロールをやったときに ページ内でのスクロールを無効にすることができる。 a要素というのはリンクでした。リンクにおいては「クリック」という動作に対して「リンク先に移動する」という動作がもともと定められており、これも無効化できる その他フォームの送信とかもデフォルト

  • 94

    Eventのプロパティのpassiveをtrueにした時の説明をせよ

    ブラウザにevent.preventDefaultを使ってないことを伝える。 つまり、ブラウザはデフォルトのイベント処理を、全てのユーザ定義イベント処理が完了するまで待つ必要がなくなり、スムーズに実行できる →スクロールのデフォルトイベントの実行が最適化される可能性あり ブラウザは、ユーザ定義イベントを全て処理して、event.preventDefaultがないことを確認できないと、デフォルトイベントを処理できない。

  • 95

    Eventのプロパティでonce:trueにするとどうなるか?

    イベント処理を一回処理すると、2回目は処理されない

  • 96

    eventのプロパティで、 イベント発生した要素に関するプロパティを2種類あげよ

    event.target イベント発火した要素さす event.currntTarget イベントリスナーを登録した要素をさす (親要素にイベントリスナー登録したりする) 親要素に設定したイベントの中で、実際にイベントが起こった要素によって処理を変更したりできるのです。具体的には、例えばp要素がクリックされたときのみログを出したい場合は、次のようにします。 <script type="text/javascript"> var listener = function(ev){ if(ev.target.tagName == "P"){ console.log('p'); } }; document.body.addEventListener('click', listener, false); </script>

  • 97

    ルート要素(HTML要素)を取得する方法は? ルートノードは?

    ドキュメントクラスからルート要素を取得する。 document.documentElement ルートノードは document.documentElement.parentNode でとれるが、 documentそのものなので、documentでよい。

  • 98

    ボディを取得する方法は?

    document.body

  • 99

    デフォルト定義イベントとユーザ定義イベントはどっちが先に実行されるか?

    ユーザ定義イベント

  • 100

    マウスイベントのmouseoutやmouseoverイベント、フォーカスイベントのblurやfocusイベントなどの対になるイベント特有のプロパティを一つあげよ

    event.relatedTarget 今のイベントと対になるイベントが起こった要素を表しています mouseoverイベントでは、マウスの移動先がtargetプロパティに入り、移動元(mouseoutイベントが起きた要素)がrelatedTargetプロパティに入ります https://developer.mozilla.org/ja/docs/Web/API/MouseEvent/relatedTarget

  • その他

    その他

    谷峻輔 · 12問 · 2年前

    その他

    その他

    12問 • 2年前
    谷峻輔

    LWC

    LWC

    谷峻輔 · 100問 · 2年前

    LWC

    LWC

    100問 • 2年前
    谷峻輔

    LWC2

    LWC2

    谷峻輔 · 28問 · 2年前

    LWC2

    LWC2

    28問 • 2年前
    谷峻輔

    javascript2

    javascript2

    谷峻輔 · 58問 · 2年前

    javascript2

    javascript2

    58問 • 2年前
    谷峻輔

    js1 JavaScript の基礎

    js1 JavaScript の基礎

    谷峻輔 · 92問 · 2年前

    js1 JavaScript の基礎

    js1 JavaScript の基礎

    92問 • 2年前
    谷峻輔

    js2 コード品質、オブジェクト基本、データ型

    js2 コード品質、オブジェクト基本、データ型

    谷峻輔 · 100問 · 2年前

    js2 コード品質、オブジェクト基本、データ型

    js2 コード品質、オブジェクト基本、データ型

    100問 • 2年前
    谷峻輔

    js3 データ型

    js3 データ型

    谷峻輔 · 100問 · 2年前

    js3 データ型

    js3 データ型

    100問 • 2年前
    谷峻輔

    js4 データ型、関数の高度な機能

    js4 データ型、関数の高度な機能

    谷峻輔 · 100問 · 2年前

    js4 データ型、関数の高度な機能

    js4 データ型、関数の高度な機能

    100問 • 2年前
    谷峻輔

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    谷峻輔 · 96問 · 2年前

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    96問 • 2年前
    谷峻輔

    js6 クラス Promise, async/await

    js6 クラス Promise, async/await

    谷峻輔 · 100問 · 2年前

    js6 クラス Promise, async/await

    js6 クラス Promise, async/await

    100問 • 2年前
    谷峻輔

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    谷峻輔 · 96問 · 2年前

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    96問 • 2年前
    谷峻輔

    js8 その他

    js8 その他

    谷峻輔 · 57問 · 2年前

    js8 その他

    js8 その他

    57問 • 2年前
    谷峻輔

    Javaとは〜

    Javaとは〜

    谷峻輔 · 83問 · 2年前

    Javaとは〜

    Javaとは〜

    83問 • 2年前
    谷峻輔

    Reactクイックスタート

    Reactクイックスタート

    谷峻輔 · 15問 · 2年前

    Reactクイックスタート

    Reactクイックスタート

    15問 • 2年前
    谷峻輔

    デザインパターン

    デザインパターン

    谷峻輔 · 5問 · 2年前

    デザインパターン

    デザインパターン

    5問 • 2年前
    谷峻輔

    承認申請

    承認申請

    谷峻輔 · 16問 · 2年前

    承認申請

    承認申請

    16問 • 2年前
    谷峻輔

    アプリケーションビルダー2

    アプリケーションビルダー2

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー2

    アプリケーションビルダー2

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー3

    アプリケーションビルダー3

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー3

    アプリケーションビルダー3

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー4

    アプリケーションビルダー4

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー4

    アプリケーションビルダー4

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー5

    アプリケーションビルダー5

    谷峻輔 · 94問 · 2年前

    アプリケーションビルダー5

    アプリケーションビルダー5

    94問 • 2年前
    谷峻輔

    アプリケーションビルダー6

    アプリケーションビルダー6

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー6

    アプリケーションビルダー6

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー7

    アプリケーションビルダー7

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー7

    アプリケーションビルダー7

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー8

    アプリケーションビルダー8

    谷峻輔 · 98問 · 2年前

    アプリケーションビルダー8

    アプリケーションビルダー8

    98問 • 2年前
    谷峻輔

    アプリケーションビルダー9

    アプリケーションビルダー9

    谷峻輔 · 70問 · 2年前

    アプリケーションビルダー9

    アプリケーションビルダー9

    70問 • 2年前
    谷峻輔

    フロー

    フロー

    谷峻輔 · 42問 · 2年前

    フロー

    フロー

    42問 • 2年前
    谷峻輔

    レポート、ダッシュボード

    レポート、ダッシュボード

    谷峻輔 · 60問 · 2年前

    レポート、ダッシュボード

    レポート、ダッシュボード

    60問 • 2年前
    谷峻輔

    SalesCloud

    SalesCloud

    谷峻輔 · 18問 · 2年前

    SalesCloud

    SalesCloud

    18問 • 2年前
    谷峻輔

    標準機能

    標準機能

    谷峻輔 · 72問 · 2年前

    標準機能

    標準機能

    72問 • 2年前
    谷峻輔

    宣言的開発

    宣言的開発

    谷峻輔 · 8問 · 2年前

    宣言的開発

    宣言的開発

    8問 • 2年前
    谷峻輔

    数式、人力規則

    数式、人力規則

    谷峻輔 · 18問 · 2年前

    数式、人力規則

    数式、人力規則

    18問 • 2年前
    谷峻輔

    アクセスレベル

    アクセスレベル

    谷峻輔 · 63問 · 2年前

    アクセスレベル

    アクセスレベル

    63問 • 2年前
    谷峻輔

    データ型変換

    データ型変換

    谷峻輔 · 22問 · 2年前

    データ型変換

    データ型変換

    22問 • 2年前
    谷峻輔

    オブジェクト、項目

    オブジェクト、項目

    谷峻輔 · 91問 · 2年前

    オブジェクト、項目

    オブジェクト、項目

    91問 • 2年前
    谷峻輔

    アプリ、タブ

    アプリ、タブ

    谷峻輔 · 92問 · 2年前

    アプリ、タブ

    アプリ、タブ

    92問 • 2年前
    谷峻輔

    自動化

    自動化

    谷峻輔 · 17問 · 2年前

    自動化

    自動化

    17問 • 2年前
    谷峻輔

    組織、開発モデル

    組織、開発モデル

    谷峻輔 · 65問 · 2年前

    組織、開発モデル

    組織、開発モデル

    65問 • 2年前
    谷峻輔

    ボタン、アクション

    ボタン、アクション

    谷峻輔 · 69問 · 2年前

    ボタン、アクション

    ボタン、アクション

    69問 • 2年前
    谷峻輔

    インテグレーション

    インテグレーション

    谷峻輔 · 40問 · 2年前

    インテグレーション

    インテグレーション

    40問 • 2年前
    谷峻輔

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    谷峻輔 · 46問 · 2年前

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    46問 • 2年前
    谷峻輔

    標準オブジェクト

    標準オブジェクト

    谷峻輔 · 42問 · 2年前

    標準オブジェクト

    標準オブジェクト

    42問 • 2年前
    谷峻輔

    ServiceCloud

    ServiceCloud

    谷峻輔 · 16問 · 2年前

    ServiceCloud

    ServiceCloud

    16問 • 2年前
    谷峻輔

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    谷峻輔 · 41問 · 2年前

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    41問 • 2年前
    谷峻輔

    データインポート、エクスポート

    データインポート、エクスポート

    谷峻輔 · 3回閲覧 · 12問 · 2年前

    データインポート、エクスポート

    データインポート、エクスポート

    3回閲覧 • 12問 • 2年前
    谷峻輔

    Chatter

    Chatter

    谷峻輔 · 21問 · 2年前

    Chatter

    Chatter

    21問 • 2年前
    谷峻輔

    承認申請

    承認申請

    谷峻輔 · 15問 · 2年前

    承認申請

    承認申請

    15問 • 2年前
    谷峻輔

    フロー

    フロー

    谷峻輔 · 44問 · 2年前

    フロー

    フロー

    44問 • 2年前
    谷峻輔

    レポート、ダッシュボード

    レポート、ダッシュボード

    谷峻輔 · 65問 · 2年前

    レポート、ダッシュボード

    レポート、ダッシュボード

    65問 • 2年前
    谷峻輔

    SalesCloud

    SalesCloud

    谷峻輔 · 18問 · 2年前

    SalesCloud

    SalesCloud

    18問 • 2年前
    谷峻輔

    標準機能

    標準機能

    谷峻輔 · 72問 · 2年前

    標準機能

    標準機能

    72問 • 2年前
    谷峻輔

    宣言的開発

    宣言的開発

    谷峻輔 · 8問 · 2年前

    宣言的開発

    宣言的開発

    8問 • 2年前
    谷峻輔

    アクセスレベル

    アクセスレベル

    谷峻輔 · 52問 · 2年前

    アクセスレベル

    アクセスレベル

    52問 • 2年前
    谷峻輔

    数式、人力規則

    数式、人力規則

    谷峻輔 · 17問 · 2年前

    数式、人力規則

    数式、人力規則

    17問 • 2年前
    谷峻輔

    データ型変換

    データ型変換

    谷峻輔 · 22問 · 2年前

    データ型変換

    データ型変換

    22問 • 2年前
    谷峻輔

    オブジェクト、項目

    オブジェクト、項目

    谷峻輔 · 89問 · 2年前

    オブジェクト、項目

    オブジェクト、項目

    89問 • 2年前
    谷峻輔

    アプリ、タブ

    アプリ、タブ

    谷峻輔 · 100問 · 2年前

    アプリ、タブ

    アプリ、タブ

    100問 • 2年前
    谷峻輔

    自動化

    自動化

    谷峻輔 · 18問 · 2年前

    自動化

    自動化

    18問 • 2年前
    谷峻輔

    組織、開発モデル

    組織、開発モデル

    谷峻輔 · 60問 · 2年前

    組織、開発モデル

    組織、開発モデル

    60問 • 2年前
    谷峻輔

    ボタン、アクション

    ボタン、アクション

    谷峻輔 · 69問 · 2年前

    ボタン、アクション

    ボタン、アクション

    69問 • 2年前
    谷峻輔

    インテグレーション

    インテグレーション

    谷峻輔 · 40問 · 2年前

    インテグレーション

    インテグレーション

    40問 • 2年前
    谷峻輔

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    谷峻輔 · 44問 · 2年前

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    44問 • 2年前
    谷峻輔

    標準オブジェクト

    標準オブジェクト

    谷峻輔 · 32問 · 2年前

    標準オブジェクト

    標準オブジェクト

    32問 • 2年前
    谷峻輔

    ServiceCloud

    ServiceCloud

    谷峻輔 · 17問 · 2年前

    ServiceCloud

    ServiceCloud

    17問 • 2年前
    谷峻輔

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    谷峻輔 · 18問 · 2年前

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    18問 • 2年前
    谷峻輔

    データインポート、エクスポート

    データインポート、エクスポート

    谷峻輔 · 11問 · 2年前

    データインポート、エクスポート

    データインポート、エクスポート

    11問 • 2年前
    谷峻輔

    Chatter

    Chatter

    谷峻輔 · 21問 · 2年前

    Chatter

    Chatter

    21問 • 2年前
    谷峻輔

    一時

    一時

    谷峻輔 · 89問 · 2年前

    一時

    一時

    89問 • 2年前
    谷峻輔

    一時2

    一時2

    谷峻輔 · 29問 · 2年前

    一時2

    一時2

    29問 • 2年前
    谷峻輔

    js9 ドキュメント

    js9 ドキュメント

    谷峻輔 · 80問 · 2年前

    js9 ドキュメント

    js9 ドキュメント

    80問 • 2年前
    谷峻輔

    問題一覧

  • 1

    Javascriptは何わたしか?

    オブジェクトは参照渡し。 プリミティブの場合は値渡しで、コピーして渡すということ

  • 2

    aとbの値は?

    プリミティブデータは値渡し aは5 bは3

  • 3

    Webページ描画時に、JavaScript はどういう順序で処理されていくか?

    windowオブジェクト生成→Documentオブジェクトを生成処理を開始 HTMLを記述順に構文解析(上から順に)開始 ツリー形式で読み込んでいく感じ <script>要素をみつけた時点で、そのまま構文解析し、エラーがなければコードを同期実行 HTMLパース完了(レンダリングが開始される) 外部リソース読み込み(CSSや画像等) ユーザー定義イベントなどのイベント発生 https://qiita.com/tanaShoe/items/f2d8f3d2ae034a094f99

  • 4

    この例だとスクリプトが読み込まれるタイミングは?

    上から順にHTMLが開始されたタイミングとなり、 body要素の最後に位置するため、body要素が全て読み込まれたあとに実行することができます。

  • 5

    要素内のテキストは、DOM上ではどう扱われているか

    テキストノード(#text)として扱われる #textの中に“テキスト値“が入る

  • 6

    取得したテキストノードに対してjavascriptで値を設定する場合はどうやるか?

    nodeValueプロパティを使う var textnode = children.item(0); //テキストノードを取得する console.log(textnode.nodeValue); textnode.nodeValue = "書き換えました";

  • 7

    DOMとはなにか?

    DOMは、「Document Object Model、つまりドキュメントを物として扱うモデル」のことを言う。 DOMツリーという階層構造を持つ。 javascriptで、DOMを操作できるようにあらゆるApiが設けられている。

  • 8

    メモ!DOMにおけるオブジェクトの関係性はこう! ちなみにHTMLDocumentクラスはいまは非推奨となっているので無視!

    おぼえろー

  • 9

    EventTargetクラスの説明をせよ

    インタフェースで、イベントをサポートするための継承する必要があるクラス addEventListenerやdispatchEventなどのメソッドをサポートする

  • 10

    Nodeクラスについて説明せよ

    インタフェース DOMノードの基底として機能する。 次のノードや子要素を表すなど、ツリー上の位置関係に関するプロパティや ノードの追加、削除を行うなどのメソッドを提供する

  • 11

    ノードオブジェクトの種類をおおまかに3つあげよ

    textノード、commentノード、Elementノード

  • 12

    Elementオブジェクトについて説明せよ

    DOM要素のベースクラス 要素ノードの検索機能や、その要素への変更などを提供する。 また子要素ノードの操作などツリー操作の機能もある HTMLに限らず、XMLやSVGの要素の基底クラスとしても利用される

  • 13

    HTMLElementについて説明せよ

    すべてのHTML要素のベースクラス

  • 14

    Windowオブジェクトとは?

    JavaScriptコードが動作しているWebブラウザのウィンドウまたはフレームを表すオブジェクト ウィンドウに対する操作などの機能がある。 Nodeは継承してない

  • 15

    Documentオブジェクトの説明せよ

    ブラウザーに飲み込まれたWebページを示す。 DOMツリーをもつ。 テキストノードやElement、EventなどあらゆるDOMにかかわるオブジェクトはdocumentから生成できる。 また、クエリセレクタなどの要素を特定する機能もある

  • 16

    テキストノードやコメントノードの値の書きかえはどうやってやるか

    NodeクラスのnodeValueプロパティを利用する。 console.log(textnode.nodeValue); textnode.nodeValue = "書き換えました"; https://developer.mozilla.org/ja/docs/Web/API/Node/nodeValue elementには利用できなさそう

  • 17

    テキストノードを削除する方法はどうするか?

    テキストノードはElementクラスを継承してないため、remove()メソッドで自身を削除できないので、 ノードクラスにあるremoveChildメソッドを使って親側から消すしかない var p = document.getElementById('aaaaa'); var children = p.childNodes; var textnode = children[0]; //テキストノード p.removeChild(textnode);

  • 18

    要素を削除するメソッドはなにがあるか

    Element.remove Node.removeChild

  • 19

    要素を作成するにはどうしたらよいか

    作成系はだいだいDocumentオブジェクト がもってる var newelement = document.createElement('p'); console.log(newelement); ちなテキストノードをつくるのはこう!! var newtextnode = document.createTextNode("新しいテキストノード");

  • 20

    要素をツリーに追加する場合は? 最後に追加するときと 位置指定するしたい場合の二通りかけ

    ツリーの操作はノードのメソッドを使う bodyの最後として追加する document.body.appendChild(newelement); insertBeforeを使うととある要素の前に位置指定できる var p = document.getElementById('aaaaa'); p.insertBefore(a, p.firstChild); pの先頭(firstChiledの前)に要素aを追加!

  • 21

    あるノードの兄弟ノードを取得するには?

    これもノードクラスを利用する previousElementSiblingとnextElementSiblingプロパティを使う var aaa = document.getElementById('aaa'); var prev = aaa.previousElementSibling; var next = aaa.nextElementSibling;

  • 22

    兄弟ノードを取得する際 previousSiblingとnextSiblingを使ったときの問題点は? その問題を回避するメソッドはなにか

    空白や改行もテキストノードとされるため タグの次に改行があれば、 テキストノードがとれてしまう。 previousElementSiblingとnextElementSiblingで回避できる

  • 23

    もともとあった子ノードを除去し、その位置に新しいノードを挿入したい場合は?

    p.replaceChild(newnode, p.firstChild); 子ノードのなかで、第一引数は置き換えたいノード、第2引数は置き換え元の子ノード ノードのもつメソッド

  • 24

    ノードをコピーするには? 引数の説明もせよ

    clonenode var newnode = p.cloneNode(true); 引数にtrueを指定すると、子ノードも全てコピーします。対して、falseを指定すると、そのノードしかコピーしません。つまり、子ノードは全くない状態で新しいノードが作られます。

  • 25

    table要素をJavaScriptで扱う上での注意事項は

    HTMLで定義されないけど、暗黙的に table要素直下にtbody要素が追加されていること

  • 26

    開発する上で要素のメソッドを探す場合はどのようにやればいいか

    該当の要素のメソッドを確認し、 なければノードやElement、htmlelementなど継承元なメソッドを確認する

  • 27

    ある要素に対して、属性を設定するにはどうするか?

    要素に対する操作はelementオブジェクト img.getAttribute("属性名") セットはこう! img.setAttribute("属性名", "zzzz");

  • 28

    要素からスタイルにアクセスし直接操作するには?

    要素からstyleプロパティにアクセスし、設定する p.style.border = "10px solid black"; CSSを利用しない直接的なスタイル設定の方法 以下と同等 <p style="border: 10px solid black;">      ↑オブジェクトの書き方と同じなので、プロパティとしてアクセスできるのも納得がいく

  • 29

    form要素を取得する方法をあげよ セレクタや検索機能を使わない方法で。

    document.formsプロパティがあるので、それを使う HtmlCollectionオブジェクトがかえってくる 他にもdocument.imagesとかanchors(a要素かつname属性をもつ) とかlinksとかもある <form id="form1" action="?"> </form> <script type="text/javascript"> var form = document.forms.item(0); console.log(form); </script>

  • 30

    HTMLCollectionオブジェクトについて説明せよ 要素内にアクセスする方法を二つ挙げよ

    要素の汎用的な集合を表す item(index)メソッドでは、インデックスに応じて要素を返す namedItem(Key)メソッドでは、idまたはname属性を指定して要素をかえす 省略で以下のようなプロパティ形式の書き方ができる var form = document.forms["form1"]; もちろん、これは次のように書いても同じことです。 var form = document.forms.form1;

  • 31

    Objectクラスとはなにか?

    すべてのオブジェクトの原型

  • 32

    objectクラスで、文字列値を返すメソッドはなにか? 暗黙的にどのような場合に呼ばれるか? カスタムオブジェクトで上書きされてない場合、デフォルトでは何がかえるか? 上書きしたら利用するにはどうするか?

    Object.toString() そのオブジェクトの文字列情報を返す オブジェクトが文字列値として表される場面や、文字列が期待される構文で参照されたときに自動的に呼び出されます (console.logでの出力の際に自動で呼ばれることがある(カスタムオブジェクトの場合) オブジェクトと文字列を結合する際に呼ばれたりする) このメソッドがカスタムオブジェクト中で上書きされていない場合、 toString() は "[object type]" という文字列を返します (type は そのオブジェクトの型)。 const o = new Object(); o.toString(); // [object Object] を返す 上書きで使うには、プロトタイプを上書きする。 function Dog(name) { this.name = name; } const dog1 = new Dog('Gabby'); Dog.prototype.toString = function dogToString() { return `${this.name}`; }; console.log(dog1); // Expected output: "Gabby" https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

  • 33

    objectクラスで、プリミティブ値を返すメソッドはなにか? 暗黙的にどのような場合に呼ばれるか?

    object.valueOf() プリミティブな値が期待される場面にオブジェクトが出くわしたとき JavaScript が自動的に実行します。 計算の時とかに呼び出される。

  • 34

    function MyNumberType(n) { this.number = n; } MyNumberType.prototype.valueOf = function () { return this.number; }; const object1 = new MyNumberType(4); console.log(object1 + 3); 何が出力されてくるか? またValueOfを上書きしなかった場合は何が出力されるか

    7が出力される 上書きしてない場合は "[object Object]3" [object Object]が上書きしてない場合のデフォルトで返される

  • 35

    objectへのアクセス方法は? var obj = { "添字1":null }; の場合は? var obj = { aaaaa:null }; の場合は?

    キーが文字列の場合は ブランケット記法のみ obj["添字1"] キーが変数の場合は ドット記法とブランケット記法どっちも使える obj.aaaaa

  • 36

    プロトタイプとはなにか? プロトタイプを取得するメソッドはなにか?

    プロトタイプは、JavaScript オブジェクトの継承を実現する仕組みで、 オブジェクトとして表現されている。 取得するにはこう Object.getPrototypeOf(myObject); // Object { }

  • 37

    プロトタイプチェーンとはなにか オブジェクトはどのような手順で継承元のプロパティを参照するか

    要するに継承のチェーンといえる。 オブジェクト自身にプロパティが見つからない場合は、プロトタイプを検索してプロパティを探します。 なければ、そのプロトタイプのプロトタイプを検索する。 というようにプロトタイプチェーンを遡っていく。

  • 38

    Object.createメソッドの説明をせよ

    第一引数にプロトタイプ 第二引数に初期化用パラメータを設定 でオブジェクトを作成できる。 オブジェクトリテラルで定義するよりも、既存の情報を利用してオブジェクト作成したい場合に利用する

  • 39

    オブジェクトのkeyやプロパティについて繰り返し処理するにはどうするか

    for inを利用する for (const property in object) 上記の場合はpropertyにキーやプロパティが設定されて繰り返し処理が行われる

  • 40

    オブジェクトの値や配列を繰り返し処理するには?

    for ofを利用する。 const array1 = ['a', 'b', 'c']; for (const element of array1) { console.log(element); } // Expected output: "a" // Expected output: "b" // Expected output: "c"

  • 41

    オブジェクトの任意のプロパティを削除するにはどうするか?

    delete文を利用する delete obj.aaa;

  • 42

    関数宣言 の評価タイミングは? function MyFunc_B (argument1 , argument2){ var v = argument1 - argument2; return v; } こんなやつが関数宣言

    プログラムが実行される前に評価される。 スコープ内にある場合はそのスコープに入った瞬間に評価される また、

  • 43

    関数リテラルを使用するなど、関数宣言でなく関数を動的に作成した場合の実行タイミングはなにか? こんなかんじ 関数リテラルで変数にいれている var func_obj = function (argument1 , argument2){ var v = argument1 + argument2; return v; }

    関数宣言と違って、関数リテラルが、先に評価される事はありません。   プログラムの実行順番と同様のタイミングで評価される

  • 44

    Functionクラス内のプロパティで、引数を参照するプロパティはなにか?

    argumentsプロパティを利用すると渡された情報を確認できる function MyFunc (){ // ------------------------------------------------------------ // 引数の総数を取得する // ------------------------------------------------------------ var num = arguments.length; // ------------------------------------------------------------ // 引数から渡されたすべてのデータを順番に取得する // ------------------------------------------------------------ var i; for(i=0;i < num;i++){ // 引数から渡されたデータを取得する var data = arguments[i]; console.log("id:" + i + " data:" + data); } }

  • 45

    HTML要素に対して Boolean型の属性を追加すると、値は何に設定されるか

    trueになる。 属性が追加せれてればtrue扱い 属性追加しないとfalse

  • 46

    export とdefault exportどう使い分ける?

    default exportは各ファイル一つまでしかつかえないので、コンポーネントとか大きいものに対して使う。あと束縛する名前はインポート側に委ねられる export は細かいものをたくさんインポートさせたいとか、部品だけインポートさせたい時に使う そのままの名前でインポートできる。

  • 47

    グラフや図を作成する場合、何を利用するか

    canvasタグをHTMLで定義し、 JavaScriptで描画設定する

  • 48

    canvasタグの属性はなにがあるか

    widthとheight属性

  • 49

    canvasタグ内にいれたコンテンツはどのように扱われるか?

    代替コンテンツとして扱われる。 つまり、canvasに対応してないブラウザでは、代替としてそのコンテンツが表示されるようになっている。 対応している場合は表示されない

  • 50

    canvasについてJs側でブラウザが対応してるかどうか確認するにはどうするか?

    canvas要素のgetContextメソッドが存在するかを調べることで存在確認ができる。 var canvas = document.getElementById("tutorial"); if (canvas.getContext) { var ctx = canvas.getContext("2d"); // 描画するコードをここに } else { // キャンバスに未対応の場合のコードをここに }

  • 51

    ページ読み込み時にcanvasの描画設定を行うには?

    loadイベントなどを利用して、描画設定を行う load イベントは、ページ全体が、スタイルシートや画像などのすべての依存するリソースを含めて読み込まれたときに発生します。

  • 52

    canvasで塗りつぶされた四角形をかくには?

    fillStyleプロパティで色を定義(デフォルトは黒)して、 fillRectメソッドで開始座標と横幅、縦幅を指定する。 function draw() { var canvas = document.getElementById("canvas"); if (canvas.getContext) { var ctx = canvas.getContext("2d"); ctx.fillStyle = "rgb(200, 0, 0)"; ctx.fillRect(10, 10, 50, 50); ctx.fillStyle = "rgba(0, 0, 200, 0.5)"; ctx.fillRect(30, 30, 50, 50); } }

  • 53

    canvasで矩形を描くメソッドはなにがあるか

    fillRect(x, y, width, height) 塗りつぶされた矩形を描きます。 strokeRect(x, y, width, height) 矩形の輪郭を描きます。 clearRect(x, y, width, height) 指定された領域を消去し、完全な透明にします。

  • 54

    これをキャンバスでかくには?

    こんなかんじ var ctx = canvas.getContext("2d"); //くろでかく ctx.fillRect(25, 25, 100, 100); //クリアする ctx.clearRect(45, 45, 60, 60); //線をかく ctx.strokeRect(50, 50, 50, 50);

  • 55

    キャンバスで線で図形を作成していくには何を利用すればいいか

    Pathを利用する。

  • 56

    キャンバスでパスを利用開始する場合どのようにコーディングするか?

    beginPathメソッドを利用し、移動する。 ctx.beginPath(); ctx.moveTo(75, 50);

  • 57

    キャンバスでmoveToした後に三角形を作るには? 塗りつぶすには?

    lineToメソッドをよんで、MoveToした位置から指定した座標までパスを描く。 ちなみにパスをかいただけでは、画面には線が描画されるわけではない。 三角形ならlineToメソッドを2回行った後に、closePath()を呼び出すと、現在位置からパスの開始地点(beginPathしたとこ)につなげれる 実際の描画には、stroke()メソッドを呼び出す必要がある。 塗りつぶすにはclosePath()の後にfill()メソッドを使うとできる(closePath()自体、省略してもうまくいく)。 ctx.beginPath(); ctx.moveTo(20,20); //最初の点の場所 ctx.lineTo(100,150); //2番目の点の場所 ctx.lineTo(10,150); //3番目の点の場所 ctx.closePath(); //三角形の最後の線 closeさせる

  • 58

    この図形を描くには?

    var ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(75, 50); ctx.lineTo(100, 75); ctx.lineTo(100, 25); ctx.fill();

  • 59

    canvasで円や円弧を作成するには? 二つあげよ

    arcメソッドで中心位置と半径を指定する。  startAngleとendAngleは円弧を作るための引数で、ラジアンが単位。 ここはちょいむず arcToメソッドでは、 パスに関係するメソッドで、これもむずいが、 直前の座標から、座標から2点を指定し、そこへの直線と、指定した2点を円で描画するイメージ 角を丸めたい時に使えると思う arc(x, y, radius, startAngle, endAngle, counterclockwise) (x, y) を中心の位置、 radius を半径、 startAngle を開始角度、 endAngle を終了角度、 counterclockwise を方向(既定では時計回り)とする円弧を描きます。 arcTo(x1, y1, x2, y2, radius) 指定した制御点と半径によって円弧を描き、その前の描画位置と直線で接続します

  • 60

    パスってどういう概念か

    キャンバスに対して、点を追加していって繋いで描画するイメージ

  • 61

    arcの引数のstartAngleとendAngleは 図の最初のやつはどう設定するか?

    ラジアンだとよくわからんので、角度の度数で指定するとわかりやすい 度数×Math.PI/180を指定するとよい 0度は最も左の位置を指しているので 180×Math.PI/180 を開始位置として 0×Math.PI/180 を終了位置にすると一番左の図形がかける

  • 62

    ハートとか💬マークみたいなのをキャンバスで作るにはどうすればよいか

    ベジェ曲線てを使うらしい 難しいから、スルー

  • 63

    プライベート変数を扱うにはどうするか? 命名規則として対応する場合 実際の機能として対応する場合をあげよ

    命名規則で対応するならアンダースコアをつける。 機能で対応するなら weakMapというValueがnullになるとキーごと削除されるマップを利用する方法があるらしい https://qiita.com/ysm001/items/04a7f3dc4795e84eee32

  • 64

    HTMLTableElement 特有のプロパティとして一つあげよ

    rows tr要素 HTMLTableRowElement が全て入ってる <table id="aaaaa"> <tr> <td>test1</td> <td>test2</td> </tr> <tr> <td>test3</td> <td>test4</td> </tr> </table>

  • 65

    HTMLTableRowElementの特有のプロパティを一つあげよ

    cells そのtr要素が持つtd要素(とth要素)のHTMLCollectionです。

  • 66

    title要素やscript要素の特有のプロパティでその要素の中身のテキストノードを全てを返すものはなにか?

    textプロパティ  書き換えも可能

  • 67

    属性を取得、設定するメソッドはなにがあるか

    ノードがもつ getAttributeとsetAttribute img.getAttribute("src") 取得する属性の名前を指定 img.setAttribute("alt", "zzzz"); セットはこう

  • 68

    要素に直接設定されたスタイルを取得するのは何のプロパティか? また、なんのオブジェクトがかえってくるか?

    HtmlElementのプロパティの styleを利用する。 CSSStyleDeclarationオブジェクトがかえる。

  • 69

    CSSStyleDeclarationを活用すると何ができるか?

    プロパティにborderなどのスタイル属性をもつ 設定もできる。 var p = document.getElementsByTagName('p').item(0); p.style.border = "10px solid black";

  • 70

    計算後のCSSstlyledeclationを取得するにはどうするか?

    windowオブジェクトのもつgetComputedStyleメソッドを利用する。 var cssStyleDeclaration = getComputedStyle( element ) ;

  • 71

    HTMLFormElement特有のプロパティを一つ上げよ 説明もせよ

    elementsというプロパティで HtmlCollectionを返す フォーム内の要素が入ってる。 select要素とか、input要素とか、textarea要素とか、button要素などが入ってる form要素は、入力フォームを作成する要素です。 この要素内に、フォームを構成する各部品を配置していきます。 フォームの各部品は、form要素で囲んでまとまめるのが一般的ですが、HTML5から、部品をform要素の外に出すことも可能となりました。 また、データの送信を行わない場合はform要素自体が不要です。

  • 72

    input要素 HTMLInputElement 特有のプロパティを4つあげよ

    formプロパティで、フォーム要素を返す disabledプロパティでdisabled属性を返す valueプロパティで、value属性を返す typeプロパティで、type属性を返す

  • 73

    HtmlFormElementが持つメソッドはなにか? 二つ挙げよ

    submitとresetがある。 form.submit();

  • 74

    フォームのsubmitやresetを画面操作のみでどうやって実行されるか?

    inputタグのタイプでsubmitを指定する 画面にはValueの値のラベルのボタンが表示される <input type=“submit” value=“送信“> これを定義するとボタンを押下した時に、form.submit()を実行する。

  • 75

    formのsubmitが実行されるとどうなるか?

    formについてはここ アクション属性で指定したURLやPHPに対し、GetやPostメソッドを行える。 GETだとUrlにフォーム要素の情報を付与してGetリクエストを送る! <form action=“http://www.google.com”> </form>

  • 76

    formタグのgetメソッド、postメソッドの特徴を説明せよ

    urlにパラメータを付与するのはgetで、postはリクエストの中にパラメータを入れるので、丸見えにはならない。 戻るボタンで元の値が復元されるのはget 復元されないのはpost <form method="GET" action="http://example.jp/article"> <label>題名:<input type="text" id="title" name="title"></label> <input type="submit" name="submit" value="検索"> </form> <form method="POST" action="http://example.jp/article"> <div><label>題名:<input type="text" id="title" name="title"></label></div> <div><label>著者:<input type="text" id="author" name="author"></label></div> <input type="submit" name="submit" value="検索"> </form>

  • 77

    特有のプロパティあるある

    特有の属性がある場合は、プロパティも用意されてる

  • 78

    HTMLInputElementのメソッドを3つあげよ

    blur、focus、click すべて引数はありません。 blurは、そのコントロールからフォーカスを外し、 逆にfocusは与えます。 clickは、そのコントロールをクリックしたことにします。 参考 ユーザがクリックするか、キーボードで Tab キーを使うとき、要素はフォーカスを受け取ります

  • 79

    inputが入力ボックス(typeが"text", "password", "search", "url"などの場合)の特有のプロパティを二つあげよ

    readOnlyプロパティ <input readonly type="text" value="testtest"> select()メソッド 入力ボックスの文字を全て選択状態にするというもの

  • 80

    inputのタイプがチェックボックスやラジオボタンの場合特有のプロパティはなにか

    checkedプロパティ

  • 81

    HTMLSelectElement つまり選択ボックス特有のプロパティを二つあげよ

    optionsプロパティ optionsは、そのselectが持つoption要素のHTMLOptionsCollectionです。 selectedIndex selectedIndexは、今選択されているoptionの番号を取得するプロパティ

  • 82

    セレクト要素のメソッドを一つあげよ

    セレクト要素に対しオプションを追加 第二引数には追加するところの直後にあるノード(追加した後に新しいノードの後ろに来るノード)を指定 ↑ようするに指定したノードの前に挿入 select.add(option, select.options.item(0) );

  • 83

    nullとundifinedの違いをあげよ

    nullはリテラル undifinedはundifinedが入った変数である。→書き換えはできない変数 どちらもプリミティブ型

  • 84

    console.log(void 0); とはなにか?

    void 0と書くとundefinedになります。これは、新しく登場した演算子「void」の効果によるものです。voidは与えられた値を無視して常にundefinedを返すような演算子です。 undifinedは変数であるため、変数定義が可能であるため、上記の方法で確実にundifined を返すことができる。 var func = function(){ var undefined = 5; // このスコープ内で新しい変数undefinedを定義 console.log(undefined); // 5が表示される }; func(); 例えばvoid "Hey!"とかvoid nullとかでも問題はありません。慣例的にここには0を置くことが多いようです。0は1文字なので最短で書けることも理由のひとつと思われます。

  • 85

    メモ イベントのリファレンスはここ

    https://developer.mozilla.org/ja/docs/Web/Events

  • 86

    Elementクラスでサポートされるイベントで、要素の上にマウスをのっけた時のイベントとマウスが離れた時のイベントをあげよ

    mouseover mouseout 例 <p style="background-color:yellow" onmouseover="aaa();">test</p>

  • 87

    要素やノードに対してイベントにメソッドを登録するにはどうするか? また、削除するには? 第三引数はなにか

    EventTargetクラスのイベントリスナーを利用する var p = document.getElementById('abcd'); p.addEventListener('click', aaa, false); p.removeEventListener('click', aaa, false); 第3引数はuseCaptureで、trueだとキャプチャリングフェーズ falseだとバブリングフェーズでのイベント発火タイミングを指定する https://note.affi-sapo-sv.com/js-addeventlistener-usecapture.php

  • 88

    removeEventListenerの活用用途は?

    一回しかイベント処理をしたくないときに使う。 →古いやり方かも onceをつかえ addEventListenerメソッドは第3パラメータのオプション引数でonceをtrueにすると var p = document.getElementById('abcd'); // イベントリスナ var handler = function(){ console.log('foo!'); p.removeEventListener('click', handler, false); }; p.addEventListener('click', handler, false); onceを利用する例 btn.addEventListener('click', (e) => { e.preventDefault(); console.log("test"); }, { 'once': true // 1度だけのイベントリスナーにするオプション });

  • 89

    イベントバブリングの利用用途はなにか?

    複数の要素のイベントをまとめて監視する場合に利用する <div> <p onclick="console.log('p');">test</p> <p onclick="console.log('p');">test</p> <p onclick="console.log('p');">test</p> </div> こういう場合、3つのp要素がそれぞれイベント属性を持つのは無駄です。 <div onclick="console.log('p');"> <p>test</p> <p>test</p> <p>test</p> </div>

  • 90

    バブリングにおける3つのフェーズを説明せよ

    キャプチャリングフェーズ Windowからターゲットまで ターゲットフェーズ バブリングフェーズ ターゲットからWindowへ

  • 91

    親要素へのバブリングや子要素へのキャプチャリングを停止するためにはどうするか?

    バブリングなら子要素のイベント処理の中で、 キャプチャリングなら親要素のイベント処理の中で、 ストッププロパゲーションメソッドを呼び出す event.stopPropagation();

  • 92

    addEventListenerの第三引数でtrueを指定する方法で、最新の書き方はなにか?

    eventオブジェクトのプロパティを第3引数として渡す。 div.addEventListener('click', function(){ console.log('div'); }, { capture: true })

  • 93

    event.preventDefault()とはなにか?

    ブラウザにデフォルトで定義されているイベント処理を無効化する。 wheelイベント つまりマウスのスクロールをやったときに ページ内でのスクロールを無効にすることができる。 a要素というのはリンクでした。リンクにおいては「クリック」という動作に対して「リンク先に移動する」という動作がもともと定められており、これも無効化できる その他フォームの送信とかもデフォルト

  • 94

    Eventのプロパティのpassiveをtrueにした時の説明をせよ

    ブラウザにevent.preventDefaultを使ってないことを伝える。 つまり、ブラウザはデフォルトのイベント処理を、全てのユーザ定義イベント処理が完了するまで待つ必要がなくなり、スムーズに実行できる →スクロールのデフォルトイベントの実行が最適化される可能性あり ブラウザは、ユーザ定義イベントを全て処理して、event.preventDefaultがないことを確認できないと、デフォルトイベントを処理できない。

  • 95

    Eventのプロパティでonce:trueにするとどうなるか?

    イベント処理を一回処理すると、2回目は処理されない

  • 96

    eventのプロパティで、 イベント発生した要素に関するプロパティを2種類あげよ

    event.target イベント発火した要素さす event.currntTarget イベントリスナーを登録した要素をさす (親要素にイベントリスナー登録したりする) 親要素に設定したイベントの中で、実際にイベントが起こった要素によって処理を変更したりできるのです。具体的には、例えばp要素がクリックされたときのみログを出したい場合は、次のようにします。 <script type="text/javascript"> var listener = function(ev){ if(ev.target.tagName == "P"){ console.log('p'); } }; document.body.addEventListener('click', listener, false); </script>

  • 97

    ルート要素(HTML要素)を取得する方法は? ルートノードは?

    ドキュメントクラスからルート要素を取得する。 document.documentElement ルートノードは document.documentElement.parentNode でとれるが、 documentそのものなので、documentでよい。

  • 98

    ボディを取得する方法は?

    document.body

  • 99

    デフォルト定義イベントとユーザ定義イベントはどっちが先に実行されるか?

    ユーザ定義イベント

  • 100

    マウスイベントのmouseoutやmouseoverイベント、フォーカスイベントのblurやfocusイベントなどの対になるイベント特有のプロパティを一つあげよ

    event.relatedTarget 今のイベントと対になるイベントが起こった要素を表しています mouseoverイベントでは、マウスの移動先がtargetプロパティに入り、移動元(mouseoutイベントが起きた要素)がrelatedTargetプロパティに入ります https://developer.mozilla.org/ja/docs/Web/API/MouseEvent/relatedTarget