Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript在DOM中添加图像元素_Javascript - Fatal编程技术网

使用Javascript在DOM中添加图像元素

使用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"

我在一个名为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");

谢谢。

这是如何将图像附加到身体上的:

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);

});

我希望这会有帮助。

如果这对你有帮助,请标记为答案并投票。如果这对你有帮助,请标记为答案并投票。我写答案时很匆忙。你的回答确实反映了一些努力:谢谢你这么详细的回答……今天学到了很多新东西:)我写答案的时候很匆忙。你的回答确实反映了一些努力:谢谢你给出如此详细的答案……今天学到了很多新东西:)