使用javascript将img元素添加到div

IT技术 javascript dom
2021-03-17 12:52:34

我正在尝试placehere使用 JavaScriptdiv添加一个 img ,但是我没有运气。任何人都可以帮我看看我的代码吗?

<html>
<script type="text/javascript">
var elem = document.createElement("img");
elem.setAttribute("src", "images/hydrangeas.jpg");
elem.setAttribute("height", "768");
elem.setAttribute("width", "1024");
elem.setAttribute("alt", "Flower");
document.getElementById("placehere").appendChild("elem");
</script>
<body>

<div id="placehere">

</div>

</body>
</html>
5个回答
document.getElementById("placehere").appendChild(elem);

不是

document.getElementById("placehere").appendChild("elem");

并使用以下设置源

elem.src = 'images/hydrangeas.jpg';
我认为我的脚本在 DOM 完成加载之前正在运行,所以我添加了 document.addEventListener("DOMContentLoaded", function() 并且它似乎修复了它!
2021-04-23 12:52:34
@AndrewDeForest:appendChild需要一个对象,然后它应该可以工作,除非您的图像路径错误。检查这个jsfiddle.net/naveen/S57rs
2021-04-25 12:52:34
好的,我把 var 从引号中去掉了,但我仍然没有看到图像
2021-05-03 12:52:34
你确定脚本运行了吗?
2021-05-10 12:52:34
嗯,我不知道。我把它改成elem.src = "images/hydrangeas.jpg" 还是没看到。我什至写出了标签 <img src="images/hydrangeas.jpg"> 只是为了确保路径正确,并且它出现了。
2021-05-11 12:52:34

它应该是:

document.getElementById("placehere").appendChild(elem);

并将你的放在你divjavascript之前,因为如果你不这样做,javascript 会div存在之前执行或者等待它加载。所以你的代码看起来像这样:

window.onload = function() {
  var elem = document.createElement("img");
  elem.setAttribute("src", "http://img.zohostatic.com/discussions/v1/images/defaultPhoto.png");
  elem.setAttribute("height", "768");
  elem.setAttribute("width", "1024");
  elem.setAttribute("alt", "Flower");
  document.getElementById("placehere").appendChild(elem);
}
<div id="placehere"></div>

为了证明我的观点,请查看带有 onload 的内容带有onload 的内容火起来的控制台,你会发现一个错误,指出div不存在或无法找到appendChild的方法null

同意,但据我所知,使用这种方法没有任何缺点。也许我们应该在 JSPerf 上设置一个性能测试
2021-04-19 12:52:34
忘记所有的setAttribute调用,直接设置属性:elem.src = ...; elem.height = ...; elem.alt = ...;等等。
2021-04-30 12:52:34
JSPerf 测试表明 setAttribute 实际上更快。好的。
2021-05-01 12:52:34
性能上的差异可以忽略不计,但为了记录,这里有一个在某些浏览器中的另一种方式。更重要的是setAttribute跨浏览器的不一致与设置属性的一致性。在 HTML5 兼容的浏览器中,两者做同样的事情,所以在这些浏览器中的性能几乎相同也就不足为奇了。
2021-05-03 12:52:34
如果您不附加它,也许它会更快。这就是我从那个测试中推断出来的。当然,您对一致性的看法是正确的。
2021-05-13 12:52:34
function image()
{
    //dynamically add an image and set its attribute
    var img=document.createElement("img");
    img.src="p1.jpg"
    img.id="picture"
    var foo = document.getElementById("fooBar");
    foo.appendChild(img);
}

<span id="fooBar">&nbsp;</span>

以下解决方案似乎是一个更短的版本:

<div id="imageDiv"></div>

在 JavaScript 中:

document.getElementById('imageDiv').innerHTML = '<img width="100" height="100" src="images/hydrangeas.jpg">';

如果有人想知道如何使用 JQuery 做到这一点:

$("<img height='200' width='200' alt='testImage' src='https://avatars.githubusercontent.com/u/47340995?v=4'> </img>").appendTo("#container");

参考:https : //api.jquery.com/jQuery/#jQuery2