为什么不生成<li>?我的脚本没有错误

巴瓦洛斯

<li>当我使用<input type="file">和脚本上载图像时,我想将元素自动添加到媒体列表中我已经编写了函数,并且一切看起来不错,因为它没有显示错误;但是,我的图像未显示在列表中。有人可以帮忙找出原因吗?

<div class="explorerContainer">
<!--This is the form to upload an image-->
<form method="post" enctype="multipart/form-data">
<div>
  <label for="image_uploads">Try your own image</label>
  <input type="file" id="image_uploads" name="image_uploads">
</div>
<!--Container for images list-->
<div class="medialistContainer">
  <ul class="mediaList">
    <li class="mediaItem" style="background-image: url('./src/images/testImage.jpg')"></li>
    <li class="mediaItem" style="background-image: url('./src/images/testImage2.jpg')"></li>
    <li class="mediaItem" style="background-image: url('./src/images/testImage3.jpg')"></li>
    <li class="mediaItem" style="background-image: url('./src/images/testImage4.jpg')"></li>
    <li class="mediaItem" style="background-image: url('./src/images/testImage5.jpg')"></li>
  </ul>
</div>
<!--This script is for uploading an image-->
<script>
  var input = document.querySelector('input');
  var preview = document.querySelector('.mediaList');

  input.style.visibility = 'hidden';
  input.addEventListener('change', updateImageDisplay);

  function updateImageDisplay() {
    while(preview.firstChild) {
     preview.removeChild(preview.firstChild);
    }
    var curFiles = input.files;
    if(curFiles.length === 0) {
      var para = document.createElement('p');
      para.textContent = 'No files currently selected for upload';
      preview.appendChild(para);
    } else {
        var list = document.createElement('ol');
        preview.appendChild(list);
        for(var i = 0; i < curFiles.length; i++) {
          var listItem = document.createElement('li');
          var para = document.createElement('p');
          if(validFileType(curFiles[i])) {
            para.textContent = 'File name ' + curFiles[i].name + ', file size ' + returnFileSize(curFiles[i].size) + '.';
            var image = document.createElement('img');
            image.src = window.URL.createObjectURL(curFiles[i]);
            listItem.appendChild(image);
            listItem.appendChild(para);
          } else {
            para.textContent = 'File name ' + curFiles[i].name + ': Not a valid file type. Update your selection.';
            listItem.appendChild(para);
            }
            list.appendChild(listItem);
          }
        }
  }

var fileTypes = ['image/jpeg', 'image/pjpeg', 'image/png']

function validFileType(file) {
  for(var i = 0; i < fileTypes.length; i++) {
    if(file.type === fileTypes[i]) {
      return true;
      }
    }
  return false;
}

function returnFileSize(number) {
  if(number < 1024) {
    return number + 'bytes';
  } else if(number > 1024 && number < 1048576) {
      return (number/1024).toFixed(1) + 'KB';
    } else if(number > 1048576) {
       return (number/1048576).toFixed(1) + 'MB';
      }
}
</script>

因此,最重要的是用户上载图像,该图像将显示在预览容器中,然后发布到我的媒体列表容器中。这是一个例子:在此处输入图片说明

英雄流浪汉

基本上,您的方法有效(至少对于第一个文件有效),但请记住,files每次选择文件时,输入属性都会重置。创建另一个文件数组,您可以将输入中的文件复制到其中,并在循环中使用此新数组。

http://jsfiddle.net/syvpqgn7/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是什么导致我的应用崩溃而没有错误

为什么我的注册表写报告没有错误但没有效果?

我现在没有,为什么我在这个 sql 请求中有错误

为什么我的.bashrc有错误?

为什么批处理脚本在没有错误代码的情况下崩溃?

为什么我的active li比hover li的大?

我没有错误,但为什么我的应用程序闭上

当我向django添加新语言时,没有错误,但没有显示我的翻译。为什么?

为什么我的可观察结果没有错误终止?

为什么 router.navigate 将我留在空白页面而没有错误消息?

为什么我可以在没有错误声明的情况下获取子例程地址?

为什么我的Node.js被“程序终止”而没有错误

当我推入超过Vec容量的元素时,为什么没有错误?

为什么我的GLSL着色器无法编译而没有错误消息?

如何检查为什么我的 android 应用程序崩溃没有错误

为什么我的 AlertDialog 即使没有错误也不起作用?

为什么Firestore有时不返回任何东西,没有错误,什么也没有?

为什么li标签没有获取循环变量的值?

我的代码有什么问题,因为没有错误,但是我无法运行它?

当日志显示没有错误时,为什么我的推送通知没有出现在设备上?

为什么我的 UL 背景色没有覆盖 LI 元素?

Steam不运行,没有错误

为什么没有错误的接收器被阻塞?

为什么下面的代码编译没有错误?

为什么“ std :: string(blablabla());” 编译没有错误?

我的代码有什么问题?程序直接终止,没有错误语句

此功能有什么问题?它使我的程序崩溃而没有错误

为什么我的简单计算器不生成输出

为什么我随机生成的房间不总是连接(Kotlin)