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 3 years have passed since last update.

prototype.js IE7でセレクタでのDOM取得ができない場合の対処法

Posted at

現象

prototype.js(1.7)にてDOM取得を行おうとした際、
IE11(7互換モード)にてjavascriptエラーが発生した。

具体的には、formタグ内のhiddenをCSSセレクタにて取得しようとしてエラーになった。

前提

・prototype.js ver.1.7
・1ページ内に同じidの要素が複数ある
 (本当はidが重複してはいけないんだけど、大人の事情で回避できず)

書いたコード

html
<form name="form">
    <input type="hidden" id="hidden">
</form>
js
var submitElem = $$('form[name=form] #hidden')[0];
submitElem.value = 'execute';

IEから吐かれたエラー

未定義または NULL 参照のプロパティ 'value' は設定できません
jsの1行目でエレメントが取れていないので、2行目でnull参照となっている

対処法

#hidden → input[id=hidden] に変更することで解決する。

js
var submitElem = $$('form[name=form] input[id=hidden]')[0];
submitElem.value = 'execute';

これでhiddenのvalueに値が入った。

#備考
document.getElementsBySelectorでも発生するか確認したが
IE7互換モードにおいては、上記functionはそもそも非対応であった。

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?