老师,没进度条
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>拖拽文件上传案例</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.container{
width: 400px;
height: 300px;
margin: 100px auto;
border: 2px dashed black;
box-sizing: border-box;
overflow: auto;
}
.containerDrop{
border: 2px dashed blue;
}
.tips{
line-height: 290px;
text-align: center;
}
.file{
width: 100%;
height: 40px;
display: block;
position: relative;
list-style-type: none;
}
.text{
line-height: 40px;
font-size: 20px;
position: relative;
z-index: 2;
padding-left: 10px;
}
.progress{
position: absolute;
left: 0;
top: 0;
width: 10%;
height: 100%;
background-color: #B0E24B;
}
.loading,.right,.wrong{
width: 30px;
height: 30px;
display: inline-block;
vertical-align: middle;
padding-right: 10px;
}
.loading{
background: url(img/loading.png) no-repeat;
}
.right{
background: url(img/right.png) no-repeat;
}
.wrong{
background: url(img/wrong.png) no-repeat;
}
.none{
display: none;
}
</style>
</head>
<body>
<div id="container" class="container">
<div id="tips" class="tips">拖动文件至此区域,即可上传</div>
<ul class="none" id="files">
</ul>
<div id="template" class="none">
<li class="file">
<span class="text"><span class="loading"></span><span class="name">aaa</span></span>
<div class="progress"></div>
</li>
</div>
</div>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
(function($){
$('#container').on('dragenter',function(e){
if(!$('#tips').hasClass('none')){
$('#tips').text('松开鼠标,即可上传');
}
$('#container').addClass('containerDrop');
}).on('dragleave',function(e){
if(!$('#tips').hasClass('none')){
$('#tips').text('拖动文件至此区域,即可上传');
}
$('#container').removeClass('containerDrop');
}).on('dragover',function(e){
e.preventDefault();
}).on('drop',function(e){
e.preventDefault();
if(!$('#tips').hasClass('none')){
$('#tips').addClass('none');
$('#files').removeClass('none');
};
$('#container').removeClass('containerDrop');
var files = e.originalEvent.dataTransfer.files;
for(var i=0;i<files.length;i++){
var file = files[i];
var li = $('#template li').clone();
var icon = li.find('.loading');
var name = li.find('.name');
var progress = li.find('.progress');
name.text(file.name);
$('#files').append(li);
//需要有后台的一个upload上传的接口
//upload(file,progress,icon);
//模拟的upload
simuUpload(file,progress,icon);
}
});
var simuUpload = function(file,progressEle,iconEle){
var progress = 0;
var timer = setInterval(function(){
var progress = progress + Math.floor(Math.random() * 3);
if(progress < 100){
progressEle.css('width', progress + '%');
}else{
clearInterval(timer);
progressEle.css('width', '0');
iconEle.removeClass('loading').addClass('right');
}
},100);
}
})(jQuery);
</script>
</body>
</html>
老师,看了好几遍也没看出来哪里写错了?像这种情况不太好检查出来,如何调试能够更快的找出问题呢
正在回答
同学你好, 老师测试你的代码, 可以看出一开始是有进度条的, 而且也是可以上传成功的, 示例:
这个时候,就可以分析一下原因,其他部分代码应该是没有问题, 否则程序会报错,那么出错的原因应该就是在进度条计算这里哦。 检查代码可以发现, 在定时器中再次使用var声明了progress变量,导致没执行一次定时器,progress都会重新赋值了, 所以无法显现效果。
建议修改:
多练习,多总结解决问题的思路和方法,举一反三,慢慢积累, 那么以后再出现问题,就可以很快的定位问题所在了。
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星