現象
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はそもそも非対応であった。