2014-11-02 65 views
0

我试图将链接添加到图像的标签,我有一块JavaScript代码为:的Javascript使用appendChild:不确定是不是一个函数

var imgs = document.getElementsByTagName("img");

但我想添加源在循环中每一种,除了第一个:

for (var i = 1; i < imgs.length; i++) { 
    var a = document.createElement('a'); 
    a.href = imgs[i].src; 
    a.appenChild(imgs[i]); 
} 

然而,当我运行它,我得到这个错误:

Uncaught TypeError: undefined is not a function 

我试图使用alert来显示imgs[i],并且我得到[object HTMLImageElement]。有什么可能导致这种情况,我该如何解决?谢谢大家提前

+0

错字。 appen * d *小孩 – 2014-11-02 00:49:18

+0

我是个笨蛋大声笑。它现在正在工作,但图像正在消失。这是为什么? – gfcf14 2014-11-02 01:04:03

+0

appendChild将元素从页面中取出并放入您正在创建的链接中。我猜这就是它的工作原理。 – 2014-11-03 04:11:17

回答

1

错字上cloneNodeappendChild &使用带有会阻止你的代码从页面移除图像。

要使用新链接替换图像,请使用下面的代码。

var imgs = document.getElementsByTagName("img"); 

for (var i = 0; i < imgs.length; i++) { 
    var a = document.createElement('a'); 
    a.href = imgs[i].src; 
    a.appendChild(imgs[i].cloneNode(true)); 
    imgs[i].parentNode.replaceChild(a, imgs[i]); 
} 

编辑

修改你的HTML是这样做的更好的方法。

来源:

<img src="link/to/image.jpg"></img> 

要:

<a href="link/to/image.jpg"></a> 
    <img src="link/to/image.jpg"></img> 
</a> 
+0

我这样做了,虽然图像仍然存在,但它们没有链接。当我按下F12时,我没有收到任何错误 – gfcf14 2014-11-03 04:23:15

+0

这是因为您没有将这些'a'元素放入DOM中。你只是在javascript中创建它们,而不是将它们放在页面上。 – 2014-11-03 16:55:25

+0

我编辑了我的代码,以便将图像替换为您在for循环中创建的链接图像。下一次你提出一个问题时,一定要包括你的代码的最终目标是什么,它会得到更快的回答。 – 2014-11-03 17:00:22

2

你想要appendChild()但你的代码说appenChild()。修正错字,并修复错误。

+0

固定它。尽管我现在没有遇到任何错误,但一旦页面加载完成,图像就会消失。为什么会发生? – gfcf14 2014-11-02 01:07:37

相关问题