Javascript - 如何创建元素,将其添加到数组中并显示它

标签 javascript html oop object

我正在尝试创建一个网络应用程序,它允许用户从他们的电脑上传图像,然后它将创建一个对象,并将其添加到一个数组中(以记录它及其属性)并将其显示在屏幕上。

我创建了一个codepen:https://codepen.io/eve_mf/pen/XebVWv

html:

 <form id="form" action="" method="post" enctype="multipart/form-data">
  <div class="file-uploader-wrapper">
      <input id="file-uploader" class="file-uploader-input" type='file' onchange="retrieveImageFromUpload(this);"/>
      <button class="file-uploader-btn" type="button">Select an image</button>
  </div>
</form> 

 <div id="map-view"></div>

js:

let allImages = [];
let displayImages = document.getElementById("map-view");
let imagesCounter = 0;

$(".file-uploader-btn").click(function() {
  $("#file-uploader").click();
});

function retrieveImageFromUpload() {
   let imgReader = new FileReader();
   imgReader.readAsDataURL(document.getElementById("file-uploader").files[0]);

   imgReader.onload = function (imgReaderEvent) {
        let imageUploadedName = imgReaderEvent.target.result;
        return readUploadedImage(imageUploadedName);
    };
}

//create HTML image from the uploaded img
function readUploadedImage(imageUploadedName) {

  imagesCounter++;

  let img = document.createElement('img');
  img = {
    "id": 'screen-' +  imagesCounter,
    "src": imageUploadedName,
    "alt": 'Default-alt'
  };

 allImages.push(img);

  console.log(allImages);

var imgHTML = img.cloneNode(true);
imgHTML = "<img id='"+ img.id + "' src='" + img.src + "' alt ='" + img.alt + "' />";
displayImages.appendChild(imgHTML);

console.log("-------------");

}

我的问题在创建图像元素后开始;我想我很困惑,但我无法真正理解在哪里或为什么。

  • 我使用“let img = document.createElement('img');”创建图像
  • 然后,我将其属性设置为对象,我认为这就是我搞砸的地方。然后,我将这个对象放入我的数组(称为 allImages)中,所以,这就是我目前想要的。
  • 但是,在将这个对象添加到我的数组中的一部分中,我想将其显示为 HTML 图像,我正在尝试使用“appendChild”,但肯定是真的出了问题,因为我收到了错误,但我不是使用节点元素进行操作。

有人可以插入我走上正确的道路吗?

谢谢

最佳答案

在这里我更正了你的codepen .

您必须创建一个 DOM 元素才能将其添加到页面:

var imgHTML = document.createElement("IMG");
imgHTML.setAttribute("id", img.id);
imgHTML.setAttribute("src", img.src);

已测试并正常工作。

关于Javascript - 如何创建元素,将其添加到数组中并显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46238138/

相关文章:

javascript - 在 Node.js 中实现 HTTP Post 方法的首选方法

javascript - Angular 获取全名

javascript - 调整表格的列宽

python - OOP Python 向基类添加一些属性?

c# - 如何让枚举存储每个条目的额外信息

c++ - 面向对象的设计选择

javascript - JS/jQuery : How can I select the first LI item of an UL navigation when hovering over another (lower) LI element?

javascript - 如何更改默认的Literally Canvas绘图区域高度?

javascript - 制作每小时天气预报的 slider

javascript - 使用 javascript 定位 DIV 的 style.left 不起作用