プログラミングでjavascriptを勉強していて理解できているようなできていないような感じで困っています。
例えば以下の様なコードがあったとします
HTML
(略) <body id ="test"> (略)
JavaScript
const _d = document; const Hoge = function(){ (略) alert(_d.~); //アクセスできてdocumentオブジェクトのメソッドが使える (略) } Hoge.prototype = { testdesuyo : function(){ alert(_d.URL); //ここもdocumentオブジェクトのメソッドが使える _d.getElementById("test").insertAdjacentHTML('afterbegin', '<p>testes</p>'); //何故かinsertAdjacentHTMLが使えない //insertAdjacentHTMLなんてないよとGoogleChromeのコンソールが言ってくる // ↑これが何故か分からない } }; 以下略
スコープの問題かな(?)と思いましたが、ドキュメントにも普通にアクセスできているようですし、
insertAdjacentHTMLの仕様かな(?)とも思い、MDNの仕様ページを見ましたが全てのエレメントで使えるようなのでそれもない
となると何がなんだか訳が分かりません
上級者の方教えて下さい
=========================================================================
追記
実行してみたソースとその時に出てきたコンソールのログです
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <script> const _d = document; const Hoge = function () { alert("実験成功 : 最終更新日時は" + _d.lastModified); } Hoge.prototype = { testdesuyo: function () { alert("実験成功 : 最終更新日時は" + _d.lastModified); _d.getElementById("test").insertAdjacentHTML('afterbegin', '<p>testes</p>'); } }; let hoge = new Hoge(); hoge.testdesuyo(); </script> </head> <body id="test"> </body> </html>
試してみましたが、問題なく動作しました。もしかして、id="test" の要素がないとか?
loadイベントの後でもエラーになるのでしょうか?追記いただけると幸いです。
お早いご回答ありがとうございます! id="test"の要素はあります loadした後でのエラーです 宜しくお願いします
それでは、問題なく動作しました。環境の問題か、ここに書かれていないコードの問題かと思います。
HTMLとJSを追加して、https://jsfiddle.net/f87t0r1z/1/ を作りましたが、Mac用Chrome v.63 では「insertAdjacentHTMLなんてないよ」のエラーはconsoleに出ませんでした。
ご回答ありがとうございます ご指摘を受けて、実行したソースを載せたのせましたので宜しくお願いします
namnium1125 さんのご推測が正しかったようですね。
loadイベントという言葉が曖昧だったのかもしれません。。https://www.sejuku.net/blog/19754
