e.target.files[0]层层剖析

jQuery文件输入事件详解
本文详细介绍了使用jQuery处理文件输入事件的方法,包括如何获取事件对象、读取目标元素及所选文件的信息。通过实例展示了如何提取文件名、大小等属性。


$('input').change(function(e){

 1️⃣、console.log(e)==>得到的是什么呢

  得到的是:下面这些

  1. altKey:undefined
  2. bubbles:true
  3. cancelable:false
  4. ctrlKey:undefined
  5. currentTarget:input
  6. data:null
  7. delegateTarget:input
  8. detail:undefined
  9. eventPhase:2
  10. handleObj:Object
  11. isDefaultPrevented:h()
  12. jQuery22007808826687871413:true
  13. metaKey:undefined
  14. originalEvent:Event
  15. relatedTarget:undefined
  16. shiftKey:undefined
  17. target:input
  18. timeStamp:3956.0400000000004
  19. type:"change"
  20. view:undefined
  21. which:undefined
  22. __proto__:Object      

2️⃣、console.log(e.target)又会得到什么呢?

  得到的是input对象<input type="file" multiple="multiple" style="top: 91px; left: 44px; position: absolute; opacity: 0; z-index: 1000;">

3️⃣、console.log(e.target.files)呢,得到的又是什么呢?

  得到的是一串filelist

  1. FileList
    1. length:0
    2. __proto__:FileList

4️⃣、console.log(e.target.files[0])又能得到什么呢

  得到的是第一张input选择的图片的一些参数,得到的这些参数可以根据自己的需要提取,比如我现在需要的是size参数,e.target.files[0].size就可以拿到了,得到的单位是b哈

  1. File
    1. lastModified:1478486422000
    2. lastModifiedDate:Mon Nov 07 2016 10:40:22 GMT+0800 (CST)
    3. name:"222.jpg"
    4. size:124996
    5. type:"image/jpeg"
    6. webkitRelativePath:""
    7. __proto__:File

})

`const file = e.target.files[0]` 这行代码的作用是从事件对象 `e` 中获取用户选择的第一个文件。下面对这行代码进行详细解释: #### 事件对象 `e` 在 JavaScript 中,当一个事件(如 `change` 事件)触发时,会自动创建一个事件对象 `e`,这个对象包含了与该事件相关的信息,例如事件的类型、触发事件的元素等。在这个上下文中,`e` 是 `input` 元素的 `change` 事件触发时传递给事件处理函数的事件对象。 #### `e.target` `e.target` 是事件对象的一个属性,它指向触发该事件的 DOM 元素。在这个例子中,`e.target` 就是用户选择文件的 `<input>` 元素。通常,这个 `<input>` 元素的 `type` 属性被设置为 `file`,以允许用户选择文件。示例代码如下: ```html <input type="file" id="fileInput"> <script> const input = document.getElementById('fileInput'); input.addEventListener('change', function(e) { // e.target 就是这个 input 元素 }); </script> ``` #### `e.target.files` `e.target.files` 是 `<input type="file">` 元素的一个属性,它是一个类数组对象(`FileList` 类型),包含了用户选择的所有文件。如果用户选择了多个文件,`e.target.files` 中就会包含多个 `File` 对象;如果只选择了一个文件,`e.target.files` 中就只有一个 `File` 对象。示例代码如下: ```html <input type="file" id="fileInput" multiple> <script> const input = document.getElementById('fileInput'); input.addEventListener('change', function(e) { // e.target.files 包含用户选择的所有文件 console.log(e.target.files); }); </script> ``` #### `e.target.files[0]` `e.target.files[0]` 表示 `FileList` 对象中的第一个文件。由于 `FileList` 是类数组对象,可以通过索引来访问其中的元素,索引从 0 开始。因此,`e.target.files[0]` 就是用户选择的第一个文件,它是一个 `File` 对象,包含了文件的相关信息,如文件名、文件大小、文件类型等。示例代码如下: ```html <input type="file" id="fileInput"> <script> const input = document.getElementById('fileInput'); input.addEventListener('change', function(e) { const file = e.target.files[0]; if (file) { console.log('文件名:', file.name); console.log('文件大小:', file.size); console.log('文件类型:', file.type); } }); </script> ``` 综上所述,`const file = e.target.files[0]` 这行代码的作用是从用户选择的文件列表中获取第一个文件,并将其赋值给变量 `file`,以便后续对该文件进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值