LoginSignup
9
9

More than 5 years have passed since last update.

【IE11】undefinedになるsvg.classListへの対処方法

Last updated at Posted at 2017-07-26

現象確認環境

  • Windows 10
  • IE11 (見てないですが、IE10以下もダメでしょうね:raised_hand:

上記環境で発生した現象

SVG要素に対して

svg.classList.add('active')

などすると、 未定義または NULL 参照のプロパティ は取得できません と怒られる。

このとき、svg.classListは常に undefined であり、undefined なので もちろんクラスを付けることも、外すこともできない:sob::anger:

対処法

クラス(classList)ではなく、属性(attribute)を操作してやればよいです。

svg.classList.add の代わりに、

svg.setAttribute('class', 'active')

svg.classList.remove の代わりに

svg.setAttribute('class', '')

class="" の中身をごそっと書き換えてしまうので、対象の svg がマルチクラスである場合は少し注意が必要ですが、概ねこのようにすると良いですね :ok_hand:

マルチクラスの場合に詰まった時は、参考のリンクまで足をお運び下さい。

svg.className = 'active' ... ?

これはChromeでもダメでした。svg の場合 className は read only だそうです。

参考

Thank you :two_hearts:
https://stackoverflow.com/questions/8638621/jquery-svg-why-cant-i-addclass

9
9
1

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
9
9