Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript获取图像大小_Javascript_Jquery_Html - Fatal编程技术网

用javascript获取图像大小

用javascript获取图像大小,javascript,jquery,html,Javascript,Jquery,Html,为什么选择了两次图像二级图像的大小未显示 我的完整代码: 函数句柄文件(文件){ 对于(var i=0;i

为什么选择了两次图像二级图像的大小未显示

我的完整代码:


函数句柄文件(文件){
对于(var i=0;i
如果选择同一图像两次,则图像选择实际上没有改变,因此不会触发
onchange
处理程序。如果选择不同的图像,则会显示其大小。

因为当您第二次单击同一图像时,不会更改文件,因此不会触发
onchange
事件,因此不会调用函数
handleFiles
,因此不会显示大小。在此情况下使用另一个事件。也许您可以在
handleFiles
函数中重置输入文件。这样,即使用户再次选择相同的图像,它也将被视为新图像,因此将触发
onchange
事件。

像这样重置字段。我测试过了。它工作得很好

            <script type="text/javascript">

                function handleFiles(files) {
                    for (var i = 0; i < files.length; i++)
                    {
                       alert(files[i].size + ' Bytes' );
                       reset_field('handleFilesfield');
                }
                }

                function reset_field(id) {
                $('#'+id).html($('#'+id).html());
                }

            </script>
            ​<form>
                <span id="handleFilesfield"><input type="file" onchange="handleFiles(this.files)"/></span>
            </form>

函数句柄文件(文件){
对于(var i=0;i
如前所述:
onchange
在选择同一图像时不会触发(=不要更改值–请参见?这很有意义)。但是,如果每次都要触发
onchange
,可以尝试在
onmousedown
事件中重置该值。这样,该值将保留以供提交,并强制
onchange
触发。演示:

注意:如果您需要触摸兼容,您可能还需要使用
ontouchstart

我选择同一图像两次,我该怎么办?您为什么需要做任何事情?您第一次已经对该图像的详细信息做了一些处理…如果需要保留该值以便可以提交该图像,该怎么办?那么只需将其保存在HandleFile中的某个位置即可。您甚至可以将其分配给页面中的另一个表单字段,以便保留它。至少,您的值不会与文件输入相关联。
            <script type="text/javascript">

                function handleFiles(files) {
                    for (var i = 0; i < files.length; i++)
                    {
                       alert(files[i].size + ' Bytes' );
                       reset_field('handleFilesfield');
                }
                }

                function reset_field(id) {
                $('#'+id).html($('#'+id).html());
                }

            </script>
            ​<form>
                <span id="handleFilesfield"><input type="file" onchange="handleFiles(this.files)"/></span>
            </form>