文本方法不适用于ie

时间:2011-11-21 10:04:48

标签: jquery

我收到了一些XML这样的文字信息:

var timeZones = {
    chennai : 'getTime.php?lat=13.0833333&lan=80.2833333'
}

$.each(timeZones, function(key,value){
    $.get(value, function(response){
        var getResTime = $(response).find('localtime').text();
        //var getResSec =
        //day = getResTime.substring(12,2);
        //month = getResTime.substring(14,3);
        //year = getResTime.substring(17,3);

        alert(getResTime);

    }) 
})

但在Internet Explorer中,alert()没有出现。所有其他浏览器都很好。可以帮助它在IE中工作吗?

在我阅读了一些文章之后,我确实改变了我的功能,以便从IE获得结果,

 var timeZones = {
        chennai : 'getTime.php?lat=13.0833333&lan=80.2833333'
    }

$.each(timeZones, function(key,value){
                    $.get(value, function(data){
                      parseXml(data);
                      var myLocation = $(data).find('localtime').text();
                      alert(myLocation);
                    }) 
                })

                function parseXml(xml) {
                    if (jQuery.browser.msie) {
                        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
                        xmlDoc.loadXML(xml);
                        xml = xmlDoc;
                    }   
                    return xml;
                }

现在我将数据作为xml接收,但我无法从数据中找到'localtext'信息,仅在ie上。其余的浏览器工作正常。 (我正在收到警报),我做错了什么?

建议请......?

1 个答案:

答案 0 :(得分:0)

IE无法将自定义标记视为有效的DOM元素。

对于IE,这样的事情:<localtime>10:00</localtime>不是有效的DOM,并且无法使用标准方法提取值。

最简单的解决方案是,如果您可以更改XML格式以使用标准HTML,例如:

<div class="localtime">10:00</div>

然后将代码更改为:

var getResTime = $(response).find('.localtime').text();

它应该适用于所有浏览器。