开发者问题收集

Javascript appendChild:未定义不是一个函数

2014-11-02
1139

我试图将链接添加到我在一段 javascript 代码中的图像标签中,如下所示:

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] 。可能是什么原因导致的,我该如何解决?提前谢谢大家

2个回答

您需要 appendChild() ,但您的代码显示 appenChild() 。修正拼写错误,错误应该会得到解决。

Trott
2014-11-02

appendChild 上的拼写错误以及使用 cloneNode 将阻止您的代码从页面中删除图像。

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

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>
Cory Danielson
2014-11-03