如何使用javascript在锚之前插入元素

时间:2011-06-20 18:38:32

标签: javascript dom

function Insert_Icon() {
 var images = document.images;
 for (var i=0; i<images.length; i++){
    if (images[i].parentNode.tagName.toLowerCase()=='a') {
         var re = new RegExp("google\.com","ig");
        if (re.test(images[i].parentNode.href)){

            alert(images[i].parentNode.href);
        }
      /*  ---need insert this element before anchor----
       var currentElement = document.createElement("img");  
      currentElement.setAttribute("class", "icone"); 
      currentElement.setAttribute("src", "images/google.png"); */ 

    }
 }
}

带谷歌超链接的所有图片显示我的png,尝试insertBefore但不成功

像这样

<img class="icone" src="images/google.png"/><a href="http://google.com" target="_self"> <img class="cover_imagem" src="cover/2.jpg"</a>

2 个答案:

答案 0 :(得分:1)

我知道这不是您问题的答案,但您可以尝试使用css。但是,这不适用于所有浏览器。

a[href^="http://google.com"]:before {
    content: url(http://g.etfv.co/http://www.google.com);
}

http://jsfiddle.net/kaleb/vbVck/

使用JavaScript在循环中执行此操作将导致许多重绘,这可能会破坏网页的性能和感知性能。理想情况下,您可以使用类似Modernizr的内容来测试用户的浏览器是否支持这些功能,并仅在必要时执行JS后备。

答案 1 :(得分:0)

如果您说<img>需要从其父<a>中移除,并在<a>之前插入,请执行以下操作:

 // parent of <a>--------v    the <img>---------v   the <a>----------v
images[i].parentNode.parentNode.insertBefore( images[i], images[i].parentNode );

这会在insertBefore的parentNode(即<a>的parentNode)上调用<img>,并在<img>之前插入<a>。< / p>