使用Javascript在DOM中添加图像元素
我在一个名为imagefolder的文件夹中有一些图像文件。文件名的格式是number_of_suit.png(例如7_of_diamond.png),我想将它们添加到我的html正文中。我想我有一些语法问题。vanilla js中的一个示例使用Javascript在DOM中添加图像元素,javascript,Javascript,我在一个名为imagefolder的文件夹中有一些图像文件。文件名的格式是number_of_suit.png(例如7_of_diamond.png),我想将它们添加到我的html正文中。我想我有一些语法问题。vanilla js中的一个示例 var addImage = document.getElementsByTagName("body"); addImage.appendChild(img src = "imagefolder/ + number + "_of_" + suit.png"
var addImage = document.getElementsByTagName("body");
addImage.appendChild(img src = "imagefolder/ + number + "_of_" + suit.png");
谢谢。这是如何将图像附加到身体上的:
document.body.appendChild(document.createElement("img")).src = "imagefolder/" + number + "_of_suit.png";
为了使其正常工作,您需要确保脚本在绘制主体后运行。这是如何将图像附加到主体的方法:
document.body.appendChild(document.createElement("img")).src = "imagefolder/" + number + "_of_suit.png";
要使其正常工作,您需要确保脚本在绘制主体后运行。基础知识 你有几个问题。首先,
document.getElementsByTagName
返回一个节点列表,而不是节点,因此不存在appendChild
元素。要解决这个问题,要么获取该集合的第一项,要么只获取document.body
:
var addImage = document.getElementsByTagName("body"); // NodeList
var bodyOne = addImage[0]; // <body> element
var bodyTwo = document.body; // <body> element
最后,正如GottZ所指出的,您不能像现在这样引用imgsrc
。您需要创建一个img
元素,然后设置src
属性
var img = document.createElement("img");
img.src = string;
更高级
您可能已经处理了这个问题,我们只需要查看少量代码,但只是以防万一:您需要等到DOM加载完成后再尝试修改它。最好等待触发DOMContentLoaded
事件
document.addEventListener("DOMContentLoaded", function () {
// Your work here.
});
由于您将要创建52个元素,因此创建一个DocumentFragment
并将所有新元素附加到其中,然后将片段附加到主体中会更有效。这会减少浏览器中的重新绘制,因此通常会更快
var fragment = document.createDocumentFragment();
// ...
fragment.appendChild(img);
// ...
document.body.appendChild(fragment);
总结
整个过程意味着您的代码可能如下所示:
document.addEventListener("DOMContentLoaded", function () {
"use strict";
var numbers = [2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "king", "Ace"];
var suits = ["Clubs", "Diamonds", "Hearts", "Spades"];
var fragment = document.createDocumentFragment();
suits.forEach(function (suit) {
numbers.forEach(function (number) {
var img = document.createElement("img");
img.src = "imagefolder/" + number + "_of_" + suit + ".png";
fragment.appendChild(img);
});
});
document.body.appendChild(fragment);
});
我希望这能有所帮助。基础知识
你有几个问题。首先,document.getElementsByTagName
返回一个节点列表,而不是节点,因此不存在appendChild
元素。要解决这个问题,要么获取该集合的第一项,要么只获取document.body
:
var addImage = document.getElementsByTagName("body"); // NodeList
var bodyOne = addImage[0]; // <body> element
var bodyTwo = document.body; // <body> element
最后,正如GottZ所指出的,您不能像现在这样引用imgsrc
。您需要创建一个img
元素,然后设置src
属性
var img = document.createElement("img");
img.src = string;
更高级
您可能已经处理了这个问题,我们只需要查看少量代码,但只是以防万一:您需要等到DOM加载完成后再尝试修改它。最好等待触发DOMContentLoaded
事件
document.addEventListener("DOMContentLoaded", function () {
// Your work here.
});
由于您将要创建52个元素,因此创建一个DocumentFragment
并将所有新元素附加到其中,然后将片段附加到主体中会更有效。这会减少浏览器中的重新绘制,因此通常会更快
var fragment = document.createDocumentFragment();
// ...
fragment.appendChild(img);
// ...
document.body.appendChild(fragment);
总结
整个过程意味着您的代码可能如下所示:
document.addEventListener("DOMContentLoaded", function () {
"use strict";
var numbers = [2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "king", "Ace"];
var suits = ["Clubs", "Diamonds", "Hearts", "Spades"];
var fragment = document.createDocumentFragment();
suits.forEach(function (suit) {
numbers.forEach(function (number) {
var img = document.createElement("img");
img.src = "imagefolder/" + number + "_of_" + suit + ".png";
fragment.appendChild(img);
});
});
document.body.appendChild(fragment);
});
我希望这会有帮助。如果这对你有帮助,请标记为答案并投票。如果这对你有帮助,请标记为答案并投票。我写答案时很匆忙。你的回答确实反映了一些努力:谢谢你这么详细的回答……今天学到了很多新东西:)我写答案的时候很匆忙。你的回答确实反映了一些努力:谢谢你给出如此详细的答案……今天学到了很多新东西:)