如何将上传的图像添加到对象数组中?

2024-03-20

我正在创建一个专辑网站只是为了学习 Javascript。我有输入框来添加专辑的标题、艺术家和年份。当按下“添加专辑”时,它会将此信息插入到名为 albumList 的对象上的数组中,然后在列表元素中显示该信息。我想知道是否可以允许用户上传图像,该图像也被推入数组并与标题、艺术家和年份一起显示。

我已经尝试了我能想到的一切,并用谷歌搜索了一整天,但没有运气。这可能吗?这是我目前的 JS,我已经删除了我尝试上传图像的所有内容,以便给我一个干净的状态,可以这么说:

var albumList = {
    albums: [],
    addAlbum: function(title, artist, year) {
        this.albums.push({
            title,
            artist,
            year
        });
    }

};


var handlers = {
    addAlbum: function() {
        var addAlbumTitle = document.getElementById("addAlbumTitle");
        var addAlbumArtist = document.getElementById("addAlbumArtist");
        var addAlbumYear = document.getElementById("addAlbumYear");

        albumList.addAlbum(addAlbumTitle.value, addAlbumArtist.value, addAlbumYear.valueAsNumber);
        view.displayAlbums();
    }
};


//Only used to display info on screen. 
var view = {
    displayAlbums: function() {
        var albumUl = document.querySelector('ul');
        albumUl.innerHTML = '';

        albumList.albums.forEach(function(album, position) {
            var albumLi = document.createElement('li');
            var showAlbum = '';
            showAlbum = album.title + ' ' + album.artist + ' ' + album.year;

            albumLi.id = position;
            albumLi.textContent = showAlbum;
            albumUl.appendChild(albumLi);
        });
    }

};

还有我的 HTML:

<!DOCTYPE html>
<html>
<head>

</head>
<body>

    <h1>My top 100 albums</h1>   

    <div>
        <input id="addAlbumTitle" type="text" placeholder="Title">
        <input id="addAlbumArtist" type="text" placeholder="Artist">
        <input id="addAlbumYear" type="number" placeholder="Year">   
    </div>

    <button onclick="handlers.addAlbum()">Add Album</button>

    <ul></ul>

    <script src="test.js"></script>
</body>



</html>

假设您将有一个屏幕,您将在其中手动输入专辑信息,您还可以添加一个用于上传文件的输入,就像卡尔在这个答案中所做的那样:

https://stackoverflow.com/a/31710348/10355063 https://stackoverflow.com/a/31710348/10355063

var fileTag = document.getElementById("filetag"),
    preview = document.getElementById("preview");

fileTag.addEventListener("change", function() {
  changeImage(this);
});

function changeImage(input) {
  var reader;

  if (input.files && input.files[0]) {
    reader = new FileReader();

    reader.onload = function(e) {
      preview.setAttribute('src', e.target.result);
    }

    reader.readAsDataURL(input.files[0]);
  }
}

从那里,您应该能够创建一个 Image 对象并将其正常添加到您的数组中。从那里获取对象的 src 并将其与专辑的其余信息一起显示。

<input type="file" id="filetag">
<img src="" id="preview">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将上传的图像添加到对象数组中? 的相关文章

随机推荐

  • 如何使用 PDFBOX 检查完全嵌入和子集嵌入字体

    您好 我想使用 PDFBOX 检查 PDF 中字体的完全嵌入和子集嵌入 我尝试使用以下逻辑来检查 private boolean IsEmbedded Map
  • 如何更改 Bean Validation 中 ValidationMessages.properties 的位置

    默认情况下 ValidationMessages properties 可以位于我的类路径的根目录中 我可以更改此文件的位置 例如 com myapp Anything properties 吗 来自 JSR 303 规范 4 3 1 1
  • 如何实现方法链?

    在 C 中 如何实现在自定义类中链接方法的能力 以便可以编写如下内容 myclass DoSomething DosomethingElse x etc Thanks 链接是从现有实例生成新实例的一个很好的解决方案 public class
  • Django-tastypie:有关于 POST 中文件上传的示例吗?

    谁能给出一个关于使用 tastypie FileField 的完整示例 包括服务器端和客户端吗 这是我尝试过的 models py class Foo models Model img models ImageField upload to
  • VBA 从 OneDrive 下载文件

    我正在尝试从 OneDrive 下载文件 我是 API 概念的新手 这里是代码 Sub OneDrive Download Declare the Object Dim oRequest As Object Create and Assig
  • 从 Function 应用访问虚拟网络中的 Cosmos DB

    对这么长的帖子表示歉意 但我已经在这个问题上工作了几天 但似乎找不到解决方案 情况 我想通过将 Azure 中的 Cosmos DB 放置在虚拟网络 VNet 中来限制对它的访问 并且只允许通过 Function 应用进行访问 Approa
  • fipy 中的 Gmsh 网格并行执行

    我正在尝试解决 gmsh 网格上的并行问题 加载 geo 文件时发生错误 raise EnvironmentError Gmsh version must be gt 2 0 我安装的gmsh版本是2 8 3 我也尝试过2 13 2 10
  • 当用户想要应用程序中的另一种颜色时如何更改颜色? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 嗨 我制作了一个 Android 应用程序 我在想 如何实现通过单击按钮将整个应用程序更改为另一种颜色 例如从白色到黑色 有没有一种方
  • 调整 jQueryUI 对话框的高度,使其与内容一样高,最高可达最大值

    使用 jQueryUI 的对话框 我想弹出信息 我的问题是我想将对话框的高度设置为内容的高度 如果我不指定高度 那么效果很完美 高度根据内容的高度自动计算 那么问题是 如果内容非常高 对话框也会变得非常高并低于窗口 maxHeight 在这
  • TreeView 中的多项选择

    我正在使用 Windows 窗体TreeView在我的程序中进行控制 我想允许用户通过拖动鼠标指针来选择同一级别的多个节点 也称为 套索 选择 我认为没有标准TreeView允许这样做 我的问题是实现这一目标的最佳方法是什么 我是否必须在自
  • Ansible 检查作为变量提到的安装的磁盘空间

    我是 ansible 的新手 目前正在开发一个游戏 该游戏将查看远程计算机的磁盘空间是否已达到 70 的阈值 如果他们已经达到了 它应该抛出错误 我在以下位置找到了一个很好的例子 使用ansible管理磁盘空间 https stackove
  • 脚本缩小和与 MSBuild 的持续集成

    在我最近使用 C ASP NET 进行的一个项目中 我有一些相当复杂的 JavaScript 文件和一些漂亮的样式表 随着这些脚本资源规模的增长建议减少资源 http developer yahoo com yui compressor 当
  • 将 this.refs 作为 React.js 中 jsx 的属性传递

    我试图将 1 个节点作为另一个 React 组件的属性传递 如下所示 render function return div div div div
  • 在 Mac OSX 上卸载 Redis。安装更新后正在运行旧版本

    在Mac上 如何找到旧版本的Redis并将其完全卸载 我使用 OSX 并使用以下命令安装 Redisbrew install redis 由brew安装的版本状态redis 3 0 7 但是 当我运行命令时 redis server输出表明
  • 如何修复“超出最大调用堆栈大小”AngularJS

    我正在使用 AngularJs 和 Ui Router 我试图设置两个不同的主页 一个用于已登录的用户 另一个用于未登录的用户 但我收到以下错误 RangeError Maximum call stack size exceeded I r
  • 如何为 VS 扩展嵌套工具菜单按钮?

    我正在构建我的第一个 VS 扩展 因此我目前在该领域的技能相当于遵循教程和提出问题 该扩展用于加密 解密一部分web configWeb 应用程序项目的文件 我有 2 个命令 目前按钮设置在 vsct文件如下
  • 无法安装或运行应用程序 - System.Windows.Interactivity 版本 4.0.0.0

    我完全被困住了 搜索了又搜索了 我有一个对 System Windows Interactivity 版本 4 5 0 0 的引用 当我通过 ClickOnce 释放系统时 系统未安装并报告以下错误 无法安装或运行该应用程序 该应用程序需要
  • React-router-dom (v6) 与 Framer Motion (v4)

    我正在尝试将我的react router dom更新到v6 但它似乎会导致成帧器运动AnimatePresence出现问题 特别是退出过渡 在 App js 中 import Routes Route from react router d
  • 将项目添加到 Listview 控件

    我有一个listview在 C 中 具有三列 视图是详细信息 我需要向每个特定列添加一个项目 但我很难做到这一点 我已经尝试了几件事 这是我到目前为止所得到的 感谢您提前提供的任何帮助 Add the pet to our listview
  • 如何将上传的图像添加到对象数组中?

    我正在创建一个专辑网站只是为了学习 Javascript 我有输入框来添加专辑的标题 艺术家和年份 当按下 添加专辑 时 它会将此信息插入到名为 albumList 的对象上的数组中 然后在列表元素中显示该信息 我想知道是否可以允许用户上传