使用InnerHTML解析IMG标记Javascript

使用InnerHTML解析IMG标记Javascript,javascript,parsing,dom,image,innerhtml,Javascript,Parsing,Dom,Image,Innerhtml,这就是困境: 我正在做一个javascript效果。为此,我使用.innerHTML拉取一个节点及其子节点(包括图像)。然后尝试通过DOM解析它。当它到达图像标签时,抛出一个解析错误。当我提醒innerHTML时,我看到它正在剥离IMG标记的结束 我不确定问题是在于解析器还是innerHTML。如何获取这个节点,获取内部内容,将其解析为XML 看起来这里发生了类似的事情: (经过近两天的搜索,这是我在互联网上发现的唯一一个涉及这个问题的页面。) 以下是我正在使用的解析代码: function l

这就是困境:

我正在做一个javascript效果。为此,我使用.innerHTML拉取一个节点及其子节点(包括图像)。然后尝试通过DOM解析它。当它到达图像标签时,抛出一个解析错误。当我提醒innerHTML时,我看到它正在剥离IMG标记的结束

我不确定问题是在于解析器还是innerHTML。如何获取这个节点,获取内部内容,将其解析为XML

看起来这里发生了类似的事情:

(经过近两天的搜索,这是我在互联网上发现的唯一一个涉及这个问题的页面。)

以下是我正在使用的解析代码:

function loadXMLString(txt) {
    if (window.DOMParser) {
        parser=new DOMParser();
        xmlDoc=parser.parseFromString(txt,"text/xml");
    } else { // Internet Explorer
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(txt); 
    }
    return xmlDoc;
}
解决方案是更改mime类型,但如何使用javascript解析器(MS ActiveX和其他浏览器的标准)来实现这一点?我应该用什么哑剧

下面是我试图解析的DOM元素:

<div style="display:none" id="ItemsContainer" name="ItemsContainer">
    <SPAN>
       <a href="url1"><img src="1.jpg" alt="alt1" /></a>
       <a href="url2"><img src="2.jpg" alt="alt2" /></a>
       <a href="url3"><img src="3.png" alt="alt3" /></a>
       <a href="url4"><img src="4.jpg" alt="alt4" /></a>
    </SPAN>
</div>

如果我把标签换成另一个名字,就像那样,它就可以工作了。看起来innerHTML正在破坏标记,或者解析器无法解析IMG标记

请告知。
提前谢谢

我假设您使用innerHTML获取“txt”变量?我在各种浏览器中进行了测试,它确实去掉了结束标记。也许,在将其发送到函数loadXMLString之前,可以使用正则表达式将其添加回去

var re = new RegExp("(<img\b[^>]*)>", "g");
txt = txt.replace(re, "$1 />");
var re=new RegExp(“(]*)>”,“g”);
txt=txt.replace(re,“$1/>”);

IE自动将标记名大写(因此成为),因此我使用了
txt.replace(/>/g,“/>”).replace(/>/g,“/>”)


感谢所有帮助过我的人

您是否尝试过使用
应用程序/xhtml+xml
mime类型?这比
text/xml
更适合您的文档,因为如果我没有弄错的话,严格的xml需要结束标记。您是否考虑过
document.getElementById(“ItemsContainer”).getElementsByTagname(“img”)
mplungjan,我没有。我会考虑。Diodeus,XML方法是因为我在JavaScript中对它做了什么。我把所有的信息做成一些图形和叠加效果。我想我想保持在标准的HTML搜索引擎优化的目的。Matt,如果我这样做了,我如何为ActiveX版本的解析器更改mime类型?客户端对某些innerHTML的处理对SEO来说是否有趣?蜘蛛需要一个非常聪明的解析器来理解javascript操作的东西。我使用这种原理来解决问题,尽管不是确切的代码。部分原因是IE自动将标记名大写(因此变成),所以我使用了
txt.replace(/>/g,“/>”).replace(/>/g,“/>”)使其符合XML。这使它起了作用。伟大的现在,这确实留下了一个问题。在IMG标记的ALT属性中,IE innerHTML如果只有一个单词长,则不会添加引号,sigh。。。我将分别完成这项工作。感谢所有帮助过我的人!