- ベストアンサー
IE5.5 element.attributes
IE5.5 で、要素の属性のリストを取得する方法を教えて下さい。 element.attributes を試してみましたが、全然違うものが返ってきて、どうしようかと悩んでいます。 <div id="sample" style="color:red;" class="" lang="ja"></div> こういう要素があったら、例えば、 { id:'sample', style:'color:red;', class:'', lang:'ja' } というような一覧を作れるようなリストが欲しいということです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
IEでは、独自に設定した属性が、その要素のプロパティに追加されるので <div abc="5"> のabc属性は thatDiv.abc のように取得できます。 そこで、document.createElement('div')とthatDivのプロパティを比較して、thatDivのみにあるプロパティを抜き出せば、独自属性を取得できると思います。
その他の回答 (2)
- q-ue
- ベストアンサー率75% (12/16)
specified プロパティは使えませんか? specified property (Internet Explorer) http://msdn.microsoft.com/en-us/library/ie/ms534637(v=vs.85).aspx
補足
そのプロパティを使ってみたところ、実際に値が設定されている属性値を取り出すことは成功しました。 しかし、勝手に作った属性名 (例えば abc) が、attributes の プロパティに列挙されません。(<div abc="5">など) 属性名のリストだけでも、取得することはできないのでしょうか。
- fujillin
- ベストアンサー率61% (1594/2576)
IE5.5がないので、試せませんが・・・ for ~ in で順次抜き出すと言う方法ではダメでしたか?
補足
例えば、 <pre id='output' style="background-color:pink;"></pre> という要素に対して、.attributes を for ~ in で抜き出してみると、全然関係ない内容のものが出てきてしまうんです。 プロパティは、以下の通りです。 accessKey, class, clear, contentEditable, dataFld, dataFormatAs, dataSrc, dir, disabled, hideFocus, id, implementation, lang, language, length:76, onactivate, onafterupdate, onbeforecopy, onbeforecut, onbeforedeactivate, onbeforeeditfocus, onbeforepaste, onbeforeupdate, onblur, oncellchange, onclick, oncontextmenu, oncontrolselect, oncopy, oncut, ondataavailable, ondatasetchanged, ondatasetcomplete, ondblclick, ondeactivate, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, onerrorupdate, onfilterchange, onfocus, onhelp, onkeydown, onkeypress, onkeyup, onlayoutcomplete, onlosecapture, onmousedown, onmouseenter, onmouseleave, onmousemove, onmouseout, onmouseover, onmouseup, onmove, onmoveend, onmovestart, onpage, onpaste, onpropertychange, onreadystatechange, onresize, onresizeend, onresizestart, onrowenter, onrowexit, onrowsdelete, onrowsinserted, onscroll, onselectstart, style, tabIndex, title すべて、ノードの様です。 id と style だけ詳しく書きますと、 id: { nodeName: 'id', nodeValue: 'output', specified: true }, style: { nodeName: 'style', nodeValue: null, specified: true } という風になっています。
お礼
なるほど! そのような方法があるとは、考え付きませんでした。 頭が硬くなっていたようです。 それでやってみます。 ありがとうございました。