【问题标题】:Use javascript to write html around loop使用javascript围绕循环编写html
【发布时间】:2026-01-03 13:10:01
【问题描述】:

我正在使用这个旧脚本中的 javascript:JavaScript: how to load all images in a folder?

但是,我想使用同一个 javascript 文件在循环之前和循环之后编写一些 html 代码,所有这些都使用同一个 javascript 文件。

在javascript中只在它之前和之后放置一个document.write是行不通的。

var bCheckEnabled = true;
var bFinishCheck = false;

var img;
var imgArray = new Array();
var i = 0;

var myInterval = setInterval(loadImage, 1);

function loadImage() {

    if (bFinishCheck) {
        clearInterval(myInterval);
        document.write('Loaded ' + i + ' image(s)');
        return;
    }

    if (bCheckEnabled) {

        bCheckEnabled = false;

        img = new Image();
        img.onload = fExists;
        img.onerror = fDoesntExist;
        img.src = 'assets/' + i + '.png';
        document.write('<img src="assets/' + i + '.png" width="1016" height="813" alt="Kar" />');

    }

}

function fExists() {
    imgArray.push(img);
    i++;
    bCheckEnabled = true;
}

function fDoesntExist() {
    bFinishCheck = true;
}

【问题讨论】:

  • 您的目标是向服务器上的文件添加一些 HTML 吗?
  • 请阅读:developer.mozilla.org/en-US/docs/Web/API/Document 并停止使用document.write()
  • 是的,它将 HTML 添加到我的 index.html。当前的javascript(由我发布)只是添加了图像。我想要第一张图片之前的 和最后一张图片之后的

标签: javascript html


【解决方案1】:

您可能错误地使用了此示例代码。它的意图似乎是在后台预加载图像 files,而不是在 HTML 中向用户显示它们(目前)。这是为了提高页面的明显下载速度。

简而言之,这段代码实际上并没有将图像渲染到 DOM 中;这是故意的行为。

【讨论】:

  • 好的,谢谢。那你能帮我实现我最初的目标吗?循环遍历多个文件并将它们放在标签之间?
  • 您要查找的内容称为 DOM 操作。我的第一个倾向是将您指向jQuery 库。否则,我可以通过直接 DOM 操作来解决您的问题(请参阅 (developer.mozilla.org/en-US/docs/Web/API/document.createElement) 了解基本入门),但我认为您最适​​合使用 jQuery 来解决问题。
  • 嗯,好吧。你能给我一个 jquery 的开始吗?
  • 应该给你一些好的开始:*.com/questions/10863658/…如果这不能回答你的问题,我需要你澄清一下你到底是什么'重新找做。您似乎要求“将 html 添加到循环中”,但我在您的示例代码中看到的只是将宽度/高度/alt 属性添加到图像本身。这可以/应该通过图像对象上的属性来完成,一旦添加到 DOM(附加到文档中的元素),就会出现在 html 中。