首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改变文件输入,改变img src和改变图像颜色。

改变文件输入,改变img src和改变图像颜色。
EN

Stack Overflow用户
提问于 2014-07-19 06:57:00
回答 5查看 204.5K关注 0票数 52

onchange事件不起作用。我该怎么做才能在同一页上得到结果。我不想重定向到任何其他网页上传图像。这个问题是因为opencart吗?我不知道在cpanel中这样写是否正确。我正在使用opencart和cpanel。还有别的办法吗?

代码语言:javascript
运行
复制
 <input type='file' id="upload" onchange="readURL(this.value)" />
    <img id="img" src="#" alt="your image" />

脚本

代码语言:javascript
运行
复制
function readURL(input) {
var url = input.value;
var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) {
    var reader = new FileReader();

    reader.onload = function (e) {
        $('#img').attr('src', e.target.result);
    }
    reader.readAsDataURL(input.files[0]);
}
else{
     $('#img').attr('src', '/assets/no_preview.png');
  }
}

JSFiddle

EN

回答 5

Stack Overflow用户

发布于 2014-07-19 07:03:26

在调用onchange时,只需要发送this对象而不是this.value

代码语言:javascript
运行
复制
<input type='file' id="upload" onchange="readURL(this)" />

因为在函数中使用input变量作为this,如

代码语言:javascript
运行
复制
var url = input.value;// reading value property of input element

工作演示

编辑-尝试使用jQuery,如下所示

从输入字段中删除onchange:

代码语言:javascript
运行
复制
<input type='file' id="upload" >

onchange事件绑定到输入字段:

代码语言:javascript
运行
复制
$(function(){
  $('#upload').change(function(){
    var input = this;
    var url = $(this).val();
    var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
    if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) 
     {
        var reader = new FileReader();

        reader.onload = function (e) {
           $('#img').attr('src', e.target.result);
        }
       reader.readAsDataURL(input.files[0]);
    }
    else
    {
      $('#img').attr('src', '/assets/no_preview.png');
    }
  });

});

jQuery演示

票数 50
EN

Stack Overflow用户

发布于 2019-06-26 16:41:55

简单解没有Jquery

代码语言:javascript
运行
复制
<img id="output" src="" width="100" height="100">

<input name="photo" type="file" accept="image/*" onchange="document.getElementById('output').src = window.URL.createObjectURL(this.files[0])">

票数 43
EN

Stack Overflow用户

发布于 2015-04-02 21:05:59

在HTML:<input type="file" id="yourFile">中,不要忘记引用js文件或在脚本中的<script></script>之间放置以下脚本:

代码语言:javascript
运行
复制
var fileToRead = document.getElementById("yourFile");

fileToRead.addEventListener("change", function(event) {
    var files = fileToRead.files;
    if (files.length) {
        console.log("Filename: " + files[0].name);
        console.log("Type: " + files[0].type);
        console.log("Size: " + files[0].size + " bytes");
    }

}, false);
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24837646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档