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

标签 javascript arrays image

我正在创建一个相册网站只是为了学习 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>

最佳答案

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

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

关于javascript - 如何将上传的图像添加到对象数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804693/

相关文章:

javascript - JS V8 编译器优化、单态多态、(密封)对象和类、OOP

image - Google Index Images 是否没有文件扩展名?

java - 在 Swing Java Netbeans 中的 JTextField 上设置图像

javascript - 从对象数组返回单个记录

javascript - 添加条件以仅从我的计算机的IP在jmeter中运行脚本

c++ - 在多线程程序中使用动态数组的头段是否安全?

arrays - Go中的JSON解码有符号整数数组

javascript - For 循环 使用 & 连接

Python 3D 直方图

javascript - Titanium JavaScript 事件处理程序和类作用域