使用Javascript更改非常类型的标记

时间:2010-10-23 17:38:05

标签: javascript html

假设我想将所有<img>代码更改为页面上的<iframe>代码。 javascript可以用于此目的吗?

有没有办法更改实际的代码类型,或者我是否必须首先删除<img>然后创建<iframe>,如果是这样,我如何确保新代码具有与旧标签相同的容器等?

执行此类替换的最简单,最友好的浏览方式是什么?

5 个答案:

答案 0 :(得分:4)

虽然使用像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 ] );
}

答案 1 :(得分:3)

使用标准接口,只有在创建该元素时才能设置DOM元素的类型。您可以通过标准方式明智地实现的最接近的是:

  • 创建所需类型的新元素
  • 将旧元素中的每个属性复制到新元素
  • 将旧元素的每个子元素移动为新元素的子元素
  • 用新的
  • 替换DOM树中的旧元素

如果您想这样做,并需要帮助,请再次询问。

答案 2 :(得分:1)

无法更改tagName 您可以创建一个新元素,并将旧元素的属性分配给新元素,将childNodes移动到其中,并用新元素替换旧元素。

答案 3 :(得分:1)

您无法更改html标记名称的类型,但可以替换它们。一个简单的方法是使用jQuerys replacewith函数。

答案 4 :(得分:0)

您无法更改标签的类型,只能用不同的标签替换它们。

您可以通过设置newElement.innerHTML = oldElement.innerHTML

来复制内容