Javascript 是否需要getElementsByTagName对象?真的卡住了!

Javascript 是否需要getElementsByTagName对象?真的卡住了!,javascript,xml,dom,internet-explorer-7,getelementsbytagname,Javascript,Xml,Dom,Internet Explorer 7,Getelementsbytagname,正在尝试进行基本的XML检索。该代码在Firefox和Opera中正常工作,这意味着它使用XML文档中“title”节点的文本值发出警报。但在IE7中,我从这行中得到了“需要对象” x=xhttp.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue; alert(x); 顺便说一句,它与responseText(和一个txt文件)配合得很好。但我必须使用ActiveX对象才能在IE中工作……奇怪的b/

正在尝试进行基本的XML检索。该代码在Firefox和Opera中正常工作,这意味着它使用XML文档中“title”节点的文本值发出警报。但在IE7中,我从这行中得到了“需要对象”

  x=xhttp.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
  alert(x);
顺便说一句,它与responseText(和一个txt文件)配合得很好。但我必须使用ActiveX对象才能在IE中工作……奇怪的b/c我认为它支持XMLHttprequest对象。也许这与此有关

[编辑]

好的,我用这个替换了线路

    x=xhttp.responseXML.childNodes.length;
    alert(x);
FF中有2个节点,IE中有0个节点。很明显,它无法读取0个子节点。我想这和空白有关吧?有什么好处

[更新]

这一切都与我不知道如何使用msxml.DOMDocument和msxml.xmlhttpactivexobjects有关。我正在通过以下链接了解这些对象:


几天后会回答我的问题…

没有理由不这样做,例如:

var xml = response.responseXML, 
    node = xml.getElementsByTagName('child')[0];

alert(node.childNodes.length);
使用以下XML

<root>
    <child>
        <foo />
    </child>
</root>


当我在IE7中运行它时,它正确地显示了1。您是否正确地将响应的内容类型设置为text/xml?

我找到了答案。我没有提到到目前为止我正在用硬盘上的文件夹开发这个。这就是问题所在。我想引用“Ultimator”,我在webdeveloper.com上发现了他的答案:

IE7的原生XMLHttpRequest即使对同一目录中的文件也无能为力,然而,在同样的情况下,ActiveX也能够正常地为IE7服务。 原因是IE7的XMLHttpRequest对象仅限于web。 因此出现了“IE7中拒绝访问”错误,因为代码中的IE7是通过XMLHttpRequest而不是ActiveX提供的。 另一方面,Firefox的XMLHttpRequest对象允许本地请求和web请求

事实上,我甚至不明白为什么会发生所需的对象。有一段时间,我切换到只使用msxml.DOMDocument.3.0对象,并且在本地工作。然后我一直在阅读IE7是如何支持XMLHttpRequest的,所以我继续研究这个对象。在阅读了有关MSDN的教程后,我注意到他们建议创建一个“虚拟目录”,并使用MSDN上的文件

http://localhost.
然后我有了一个想法,为什么我不能把请求指向互联网上的某个地方呢?我做到了:在w3schools上创建了一个示例XML文件。你猜怎么着?它在IE7中工作,我可以通过selectSingleNode提取我想要的文本。但在Firebug中,它说xmlDoc.responseXML是空的。有趣的

所以最终我决定在我的机器上激活IIS(我有Vista Home Premium)并使用本地主机。成功了!FF、IE、Chrome和Opera以相同的方式访问文件。所以我学到的教训是:可以使用localhost来模拟服务器的行为,这在本地开发时非常有用

由于FF无法访问远程文件,并且IE能够访问它,我真的不明白…哦,现在我的问题解决了,我将报告未来的挫折。谢谢你的阅读