Irohabook
JavaScript Node.js

JavaScript の module / export を使うときは onclick でなく addEventListener を使う

広告

JavaScript の module / export を使うとき、要素の onclick は指定しないほうがいいかもしれない。

テンプレートリテラルで表示するものを export する場合を考える。

import { f } from './some.js'

export function display () {
    document.getElementById('a').innerHTML = `
    <button onclick="f()">Push</button>`
}

このとき onclick の f は動かない。

Uncaught ReferenceError: f is not defined at HTMLButtonElement.onclick

とエラーが出る。問題を解決するには

document.getElementById('#a button').addEventListener('click', f)

とする。document.getElementById はグローバルのスコープで addEventListener も適切に動く。

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会