我将在JavaScript中创建一个XML元素来与服务器端交换数据。我发现我可以用document.createElement
做到这一点。但我不知道如何将其转换为字符串。浏览器中有没有什么API可以让它变得更简单?或者有没有包含此API的JS库?
编辑:我找到了浏览器XMLSerializer,它应该是序列化成字符串的正确方式。
发布于 2010-03-19 11:04:35
您可以通过克隆元素,将其添加到一个空的“后台”容器中,并读取容器的innerHTML来获得“get html”。
这个例子有一个可选的第二个参数。
调用document.getHTML(element,true)以包含元素的后代。
document.getHTML= function(who, deep){
if(!who || !who.tagName) return '';
var txt, ax, el= document.createElement("div");
el.appendChild(who.cloneNode(false));
txt= el.innerHTML;
if(deep){
ax= txt.indexOf('>')+1;
txt= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax);
}
el= null;
return txt;
}
发布于 2010-03-19 10:32:33
element HTML属性(注意:supported by Firefox after version 11)返回整个元素的outerHTML
。
示例
<div id="new-element-1">Hello world.</div>
<script type="text/javascript"><!--
var element = document.getElementById("new-element-1");
var elementHtml = element.outerHTML;
// <div id="new-element-1">Hello world.</div>
--></script>
类似地,可以使用innerHTML
获取给定元素中包含的超文本标记语言,或者使用innerText
获取元素中的文本(sans HTML markup)。
另请参阅
发布于 2010-03-19 10:30:03
这里有一个tagName
属性,还有一个attributes
属性:
var element = document.getElementById("wtv");
var openTag = "<"+element.tagName;
for (var i = 0; i < element.attributes.length; i++) {
var attrib = element.attributes[i];
openTag += " "+attrib.name + "=" + attrib.value;
}
openTag += ">";
alert(openTag);
另请参阅How to iterate through all attributes in an HTML element? (我做到了!)
要获得开始标记和结束标记之间的内容,如果不想遍历所有子元素,则可以使用innerHTML
...
alert(element.innerHTML);
..。然后使用tagName
再次获得结束标记。
var closeTag = "</"+element.tagName+">";
alert(closeTag);
https://stackoverflow.com/questions/2474605
复制相似问题