タイトルの通りです。
※行頭にあるのは行番号ですのであしからず。
js
1console.log(document.createElement("div").append(document.createElement("span")));
を実行するとundefined
と返りますが、これを<div><span></span></div>
と返る(型はもちろんElement
)ようにしたいです。
js
1Element.prototype.addNodes = function(...nodes) { 2 this.append(...nodes); 3 return this; 4}
としてaddNodesを呼び出せば返り値にできますが、addNodesとかでなくappendを直接上書きして使いたいというワガママな考えを持っておりまして。
なにをしたいかというと、
js
1Element.prototype.append = function(...nodes) { 2 this.nodeList.push(...nodes); 3 return this; 4}
みたいに迂回(?)して追加させれば元のappendと同じように使えるのかなと。
もちろんnodeListは読み取り専用なので要素を追加することはできませんが、
これをどうにかして追加できないかという次第です。
ちなみに、
js
1Element.prototype.append = function(...nodes) { 2 for(let i = 0; i < nodes.length; i++) { 3 this.innerHTML += nodes[i].outerHTML; 4 } 5 return this; 6}
とすれば確かに要素は追加できますが、innerHTMLはDOMを再構築するため、this内にあらかじめ付与したイベントリスナーが削除されてしまうという欠点を持っているのでこの方法以外でお願いしたいです。
なぜこんなことをしたいかというと要素作成関連を一行にまとめるためにappendを入れ子で使えるようにしたいからなんですよね。
js
1document.createElement("div").append( // apend(undefined)となる 2 document.createElement("div").append( // 返り値がないためここでundefined 3 document.createElement("span") 4 ) 5)
とすると、1行目でundefinedをappendできませんよというエラーがでます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/25 21:49