【发布时间】:2018-07-10 06:33:08
【问题描述】:
我有一个 javascript 函数可以正确获取一个上传文件的文件持续时间,我正在尝试重新使用工作函数,以便我可以在其他地方获取文件持续时间,但我遇到了问题,我的 html5 代码看起来像这样:
<link rel="stylesheet" type="text/css" href="style.css">
<p>Select a .mp3 file</p>
<input type="file" id="file" multiple="multiple"/>
<audio id="audio"></audio>
<p>
<label>Song Duration:</label>
<span id="duration"></span>
</p>
<p>
<label>Tracklist:</label>
<span id="tracklist"></span>
</p>
我的 javascript 函数会在第一个文件上传后立即获取持续时间,如下所示:
$("#audio").on("canplaythrough", function(e){
console.log("calculating duration");
var seconds = e.currentTarget.duration;
var duration = moment.duration(seconds, "seconds");
var time = "";
var hours = duration.hours();
if (hours > 0) { time = hours + ":" ; }
time = time + duration.minutes() + ":" + duration.seconds();
$("#duration").text(time);
URL.revokeObjectURL(objectUrl);
});
我基本上是在尝试复制此功能,因为我知道它可以工作,并在上传的多个文件的数组中获取每首歌曲的持续时间(以秒为单位)。但是如果我只是尝试歌曲[i].duration,那总是会产生一个“未定义”的值,这是一个带有我完整代码的 jsfiddle:
https://jsfiddle.net/gt4wro11/
tldr;我有一个用户上传的多个文件的数组,我试图打印出数组中每个文件的持续时间。这 $("#audio").on("canplaythrough", function(e){ 函数成功获取了一个文件的持续时间,我正在尝试重新调整它的用途以满足我的需求,但不知道如何让它工作。
感谢您处理这么长的问题!
【问题讨论】:
-
数组中的任何内容,很可能是看起来像的字符串,没有名为
duration的属性,您没有提供足够的代码来实际帮助您 -
@JarrodRoberson 检查 jsfiddle,它包含我的所有代码,应该让它更清晰。如果我打印我的歌曲 [] 数组,在控制台中我可以看到它是一个文件列表。我感到困惑的是函数(e)如何获取其文件数据,该函数的前两行获取 var seconds 和 var duration 令人困惑,我试图将它们重新用于我可以用 var seconds = song[i ].duration.
-
在尝试提出更多问题之前,请阅读How do I ask a good question?。 所有相关代码都必须在问题中。外部网站过时了。
标签: javascript jquery html file duration