gpt4 book ai didi

javascript - 如何减慢进度条?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:34 28 4
gpt4 key购买 nike

我有以下代码:

<td id="drop-files" ondragover="return false;" colspan="2">
<br />Drag and drop files to be uploaded...<br /><br />
<input type="hidden" id="iFile" value="" /><input type="hidden" id="numFiles" value="" />
<div id="progressBar" style="width: 300px; height: 20px; border-radius: 20px; border: 1px solid rgb(0,0,0); opacity: 0; text-align: center; background: -moz-linear-gradient(left, rgb(32,96,160) 0%, rgb(32,96,160) 0%, rgb(255,255,255) 0%, rgb(255,255,255) 100%);">0%</div><br />
<div id="fileCase"></div>
</td>

// Note: The double ## is not a mistake. The code is running under
// ColdFusion where # is a is reserved character. So ## escapes the #
$(document).ready(function() {
function pad(number, digits) {
return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
}

function processFile(file,num,arr){
var inputRow = "<input type='hidden' value='' id='file_"+pad(arr,3)+"' name='file_"+pad(arr,3)+"' />";
$("##fileCase").append(inputRow);
var o = $("##file_"+pad(arr,3));
var reader = new FileReader();
reader.onload = function(e) {
o.val(e.target.result.replace(/</g, "&lt;").replace(/>/g, "&gt;"));
}
reader.readAsDataURL(file);
}

function updateProgress(idx,tot){
var midPt = Math.floor((idx)/tot*100);
$("##progressBar").css("background","-moz-linear-gradient(left, rgb(32,96,160) 0%, rgb(32,96,160) "+midPt+"%, rgb(255,255,255) "+midPt+"%, rgb(255,255,255) 100%)");
$("##progressBar").html(midPt+"%");
}
// Sets up dataTransfer event
jQuery.event.props.push('dataTransfer');
// File Array
var nameArray = [];
$("##fileCase").append("<input type='hidden' id='nameArray' value='' name='nameArray'>");

// Bind drop to drop zone
$('##drop-files').bind('drop', function(e) {
var iFile = 0;
// Prevents element from default function
e.preventDefault();
// Grabs list of files
var files = e.dataTransfer.files;
var numFiles = files.length;set("numFiles",numFiles);
$("##progressBar").animate({opacity: 1},500);
// Loop through files...
updateProgress(0,numFiles);
$.each(files, function(index, file) {
nameArray.push(files[index].name);
arr = nameArray.length;
$("##nameArray").val(nameArray.join("|"));
processFile(files[index],index+1,arr);
iFile++;set("iFile",iFile);
//setTimeout("updateProgress("+iFile+","+numFiles+");",250);
setTimeout("var midPt = Math.floor(get('iFile')/get('numFiles')*100);$('##progressBar').css('background','-moz-linear-gradient(left, rgb(32,96,160) 0%, rgb(32,96,160) '+midPt+'%, rgb(255,255,255) '+midPt+'%, rgb(255,255,255) 100%)');$('##progressBar').html(midPt+'%');",500)
});
});
});

效果很好,除了一件小东西。进度条似乎过快地达到 100%。我宁愿把它放慢一点,这样我就能得到一些看起来它正在彻底做某事的东西。

有谁知道我怎样才能减慢它的速度,这样我们才能真正看到进度条在工作?

代码中的 set()get() 函数只是我用来将变量存储在隐藏的输入表单元素中以允许 setTimeout 函数工作。

感谢您的想法。

最佳答案

我不明白你为什么要这样做,为什么你要通过渐变而不是动画化 child 的宽度,这将允许你使用 css3 过渡延迟,但你可以很容易地实现延迟只需在每次运行 updateProgress() 时添加一个小的 jquery-delay 即可达到效果。

只需在更新 css 之前将其链接起来即可。

http://api.jquery.com/delay/

关于javascript - 如何减慢进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com