假设我想将所有<img>
标记更改为页面上的标记。 JavaScript可以用于这个目的吗?使用Javascript更改标记的类型
有什么方法可以改变实际的标签类型,或者我必须先删除<img>
然后再创建,如果是的话,我怎样才能确保新标签与旧标签具有相同的容器等?
什么是最直接的和浏览器友好的方式来执行这种替代?
假设我想将所有<img>
标记更改为页面上的标记。 JavaScript可以用于这个目的吗?使用Javascript更改标记的类型
有什么方法可以改变实际的标签类型,或者我必须先删除<img>
然后再创建,如果是的话,我怎样才能确保新标签与旧标签具有相同的容器等?
什么是最直接的和浏览器友好的方式来执行这种替代?
虽然使用库等jQuery
更方便,可以用这样的无库(更换元件,不改变的类型)做到这一点:
实施例:http://jsfiddle.net/BvSvb/
var imgs = document.getElementsByTagName('img');
var i = imgs.length;
var parent;
var iframe = document.createElement('iframe');
var currFrame;
while(i--) {
currFrame = iframe.cloneNode(false);
currFrame.setAttribute('src', imgs[ i ].getAttribute('src'));
parent = imgs[ i ].parentNode;
parent.insertBefore(currFrame, imgs[ i ]);
parent.removeChild(imgs[ i ]);
}
您不能更改标签的类型,您只能用不同的标签替换它们。
您可以通过设置newElement.innerHTML = oldElement.innerHTML
复制内容。
无法更改tagName。
您可以创建一个新元素,并将旧元素的属性分配给新元素,将childNodes移动到新元素中,并用新元素替换旧元素。
使用标准接口,只有在创建元素时才能设置DOM元素的类型。您可以在一个标准的方式合理地达到最接近的将是:
替换DOM树中的老元素,不要再问。
您不能更改html标记名称的类型,但可以替换它们。一个简单的方法就是用jQuerys replacewith函数。
请注意,尽管'innerHTML'得到了广泛的支持,但它目前不是任何W3C标准的一部分。如果你想产生一个最大可移植的实现,应该避免使用“innerHTML”。 – Tim 2010-10-23 17:48:52