nex*_*xar 4 javascript xml internet-explorer children internet-explorer-9
我在javascript中将以下XML放在名为RoomPriceInfo的var中:
<?xml version="1.0" encoding="UTF-8"?>
<BkgItemHotelRoomPrices CurrCode="EUR">
<RoomType Code="DB" Count="1" Desc="Double" Age="0">
<PriceInfo EndDate="2011-12-17" AgentMarkup="0.0" MarkupPerc="0.1075" FitRdg="0.25" MarkupPrice="48.73" AgentPrice="48.75" StartDate="2011-12-11" Nights="7" FitRdgPrice="48.75" CurrDec="2" CurrDecPrice="48.75" SuppPrice="44.0"/>
</RoomType>
</BkgItemHotelRoomPrices>
Run Code Online (Sandbox Code Playgroud)
和以下代码:
DBRoomPrice = RoomPriceInfo.doXPath("//RoomType[@Code='DB']");
alert(DBRoomPrice[0].children.length);
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上的FF7和WinXP上的FF8下,我收到1的警报是正确的.但是在WinXP上的IE8和Windows 7上的IE9下没有任何反应.它只是默默地死去.
任何人都可以对此有所了解吗?如果我getElementById在DOM对象上做了一个然后请求孩子,那么IE8和IE9表现正常.
Rob*_*b W 14
Internet Explorer(包括版本11!)不支持.childrenXML元素属性.
如果要获取子元素的数量,请使用element.childElementCount(IE9 +):
element.children.length; // Does not work in IE on XML elements
element.childElementCount; // Works in every browser
Run Code Online (Sandbox Code Playgroud)
如果您只想知道元素是否有子元素,还可以检查element.firstElementChild(或element.lastElementChild)是否为空.IE9 +支持此属性:
element.children.length === 0; // All real browsers
element.firstElementChild !== null; // IE 9+
Run Code Online (Sandbox Code Playgroud)
如果要遍历XML节点的所有子元素,请通过以下方式使用childNodes和排除非元素节点nodeType:
for (var i = 0, len = element.childNodes.length; i < l; ++i) {
var child = element.childNodes[i];
if (child.nodeType !== 1/*Node.ELEMENT_NODE*/) continue;
// Now, do whatever you want with the child element.
}
Run Code Online (Sandbox Code Playgroud)
它可能无法解决问题,但是..您应该使用 childNodes 而不是 Children 属性来访问子节点。我不确定哪一个更好,但我确信 childNodes 得到了广泛的支持..可能微软也这样做过吗?!
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |