いよいよ明日か・・・。IE に node.hasAttribute が無い件&その代用

select 要素に付随する option 要素の属性の value が存在しない場合、それに使われているテキストが返される。そして、スクリプトからそれを判定する方法。

<select name="hoge">
<option>abc</option>
<option value="">abc</option>

これをスクリプトから判別するには?

var op = document.forms[0].elements['hoge'].options;
alert (op[0].hasAttribute ('value')); // IE では使えない。
alert (op[0].getAttribute ('value') === '');
alert (typeof op[0].attributes.getNamedItem('value').value !== 'undefined');
alert (typeof op[0].attributes.getNamedItem('value').specified);

ちなみに、"abc" を表示するには、

alert (op[1].attributes.value.value); // これが間違いだと指摘されても理解できるまでに時間を要した(?)。ばかっ!
alert (op[1].value); // オプションの時はこれでよしとして。
alert (op[1].attributes.getNamedItem('value').value);