我目前正在开发一个HTML5音乐播放器,屏幕上嵌有歌词,用户可以添加和同步自己的歌词,主要是为了它的乐趣。无论如何,我已经相当远了。我已经完成了播放器,控件,我甚至完成了显示歌词并同步它们的内容。这是棘手的部分。
$(".newTime").click(function(){
$( "#nowtime"+onNum ).append( player.currentTime );
var oldNum = onNum;
onNum = oldNum + 1;
});
这是我添加代码的地方。我按下一个div,它使用Jquery将当前时间追加到一个看起来像<div class='time' id='nowtime1'></div>
的div。
这是我从数据库中获取歌曲的地方(在另一位stackoverflow用户的帮助下)
<?php
$res = mysqli_query($mysqli, "SELECT * FROM song WHERE id = 1");
$row = mysqli_fetch_assoc($res);
mysqli_set_charset("utf8");
$lines = preg_split("/[\r\n]+/", $row['lyric']);
$noLines = count($lines);
array_walk($lines, function(&$line, $idx, $idx) {
$line = sprintf("<h4 id='no%d'><div class='time' id='nowtime%d'></div>%s</h4>", $idx+1, $idx+1, $line);
});
echo implode("\n", $lines);
?>
这完全没问题。但是,正如您所看到的,当我将时间添加到div时,我将其添加到DOM元素中。我实际上将它添加到多个DOM元素中,因为它是多行文本。我现在的问题是,我究竟要在数据库中输入时间然后再次获取它?我的想法是在表格中有一个名为time
的列。然后,我会根据#nowtime
中的顺序输入文本,因此如果它是#nowtime1
,它将进入第一行,如果它在#nowtime16
中,则会添加在第16排。然后当你再次接收它时,你只需将它添加到正确的div中,具体取决于它所在的行。
我不知道这是否是最好的方法,但这是我提出的唯一方法。