我在javascript中通過E4x檢索屬性值時遇到問題。Javascript E4X:如何正確迭代屬性XMLList?
假設像以下作爲XMLObject組成XML節點的列表:
<node att1="value1" att2="value2" att3="value3" att4="value4">
<nodeChild><!CDATA[/* ... */]></nodeChild>
/* more node childs */
</node>
我正常訪問的節點(在循環中)和它的屬性節點使用attributes()
方法:
var attributes = node[n].attributes() ;
for(var n = 0 ; n < attributes.length() ; n++) {
var name = attributes[n].name() ;
var value = attributes[n].toString() ;
//.. handle the values
}
現在,例如,名稱和值沒有被充分返回,值(n)返回名稱(n + 1)的值,即att1
的值將是value2
;如果我設置了var value = attributes[ (n+1) ].toString()
,則數值將正確返回,但第一個值將返回undefined
。
可能我只是在這個密集。那麼,有沒有人有任何指向我失蹤的指針?
TIA,
FK
我不確定這裏發生了什麼,但是「名稱」真的是一個函數,而不僅僅是一個簡單的字符串? – Pointy 2010-06-23 13:46:16
是的,它是-E4X很奇怪,它的行爲與你期望的正常DOM或JS對象的行爲不同。這個例子對我來說很好,除了''n'.attributes()'中'n'的位置不清楚之外。當然,如果處理這些值會改變屬性,那麼這可能會造成破壞性的迭代問題。 – bobince 2010-06-23 15:03:47
以上是僞代碼。我的用例(用於Java類的Rhino中的JS xml解析函數)要複雜得多,所以我提取了這個問題。我應該說明。抱歉。 – FK82 2010-06-24 04:13:26