0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[DOM操作] .append('テキスト') ←なぜテキストが直接入れられるのか疑問に思った

Posted at

はじめに

DOM操作の学習をしている際に、.appendの引数に渡せるものとしてオブジェクトとテキストが紹介されていました。  
想定通りに動くのでいいのですが、なぜテキストはこんなにシンプルに渡せるようになっているのかが疑問に思っていました。

結論  

先に結論としては、テキストで渡したとしても、内部でTextオブジェクトを作成して追加しているため、オブジェクトを引数に渡しているのと同じことだからでした。

確認

index.html
<body>
    <p>パラグラフ</p>
    <script src="app.js"></script>
</body>
app.js
const span = document.createElement('span');
span.innerText = 'span';

const p = document.querySelector('p');
p.append(span);

p.append('テキスト');

span要素のオブジェクトを.appendに渡すと、以下のようにブラウザに表示されます。
s2.png
このときのp要素をchromeのコンソールで確認してみます。

const p = document.querySelector('p')
console.dir(p)

 p
accessKey: ""
align: ""    
...
childNodes: NodeList(3)
0: text
1: span
2: text
length: 3
[[Prototype]]: NodeList
...

childNodes内に追加されているのがわかります。

つまり、下記2つの方法は結果に違いはなく、それゆえ簡単な方法1が紹介されていたのですね。

// 方法1 : 直接テキストを渡す
p.append('テキスト');

// 方法2 : オブジェクトにしてから渡す
const text = document.createTextNode('テキスト');
p.append(text);

ただ、Textオブジェクトに対して何か操作したい場合には、先にオブジェクトを作ることに意味が出てくるかと思うので、テキストはそのままで引数に渡すもの、と思わずに済んだのは良かったと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?