関数:
function disable_hidden_flip_questions(option, value){
var first_q = document.getElementById('hidden_auto_questions');
var second_q = document.getElementById('hidden_include_auto');
var inputs_list = [];
if(option == 'all'){
inputs_list.push(first_q.getElementsByTagName("input"));
inputs_list.push(second_q.getElementsByTagName("input"));
}else if (option == 'first'){
inputs_list.push(first_q.getElementsByTagName("input"));
}else if(option == 'second'){
inputs_list.push(second_q.getElementsByTagName("input"));
}
for (var inputs in inputs_list){
for(var input in inputs_list[inputs]){
if(inputs_list[inputs].hasOwnProperty(input) && input != 'length'){
if(!value){
inputs_list[inputs][input].removeAttribute('disabled');
}else{
inputs_list[inputs][input].setAttribute("disabled", "disabled");
}
}
}
}
}
Chrome と Firefox では問題なく動作しますが、IE9 ではコンソールに次の行でエラーが表示されます。
inputs_list[inputs][input].setAttribute("disabled", "disabled")
console.log(inputs_list[inputs][input])
Chromeでこれを取得した場合:
(入力は RoR によって生成されているため、name
とid
が非常に長い)
<input class="radio_buttons optional" id="custom_attributes_trailer_insurance_endorsement_false" name="custom_attributes[trailer_insurance_endorsement]" type="radio" value="false" disabled="disabled">
ええ、それは私が望んでいた(そして期待していた)ものです...しかし、IE9のコンソールでは次のようになります:
[object HTMLCollection]
まったく役に立たないものは……。
質問: IE の崇高な見方のどこが間違っているのでしょうか? 私は IE9 が をサポートしていることを知っているので、ループsetAttribute
に関係していると思います。for...in
編集:コメントのために、問題はオブジェクトタイプ(HTMLCollection
に保存されているArray
)にある可能性があります。その場合、すべてを互換性のあるデータ型にするにはどうすればよいですか?