gpt4 book ai didi

javascript - 如何为每个轨道添加播放和停止按钮?

转载 作者:可可西里 更新时间:2023-11-01 14:45:31 25 4
gpt4 key购买 nike

我使用 Soundcloud API 在我的网站上加载轨道列表。我想知道的是为每个轨道添加一个播放和停止按钮来控制轨道。当您在播放当前歌曲的同时单击一首新歌曲时,它应该停止当前歌曲并播放新歌曲。我怎样才能完成这个。提出以下内容,但它会给我一个错误: GET https://api.soundcloud.com/tracks/stream?oauth_token=1-134590-9095247-3d1021a057c78d8 404 (Not Found)
stream:1 GET https://api.soundcloud.com/tracks/stream?oauth_token=1-134590-9095247-3d1021a057c78d8 404(未找到)

SC.get('/users/' + USER + '/tracks', function(tracks) {

var count = 0;

$(tracks).each(function(index, track) {
count++;

$('#playlist').append($('<li></li>').html('<a href="#" id="start">Start</a> <a href="#" id="stop">Stop</a>' + count + ' / ' + track.title + ' - ' + track.playback_count));
//$('#cover').append($('<li></li>').css('background-image', "url('" + track.artwork_url + "')");
$("#cover").append('<div><img src="' + track.artwork_url.replace('-large', '-t500x500') + '"></div>');


SC.stream('/tracks', function(track){
$('#start').click(function(e) {
e.preventDefault();
track.start();
});

$('#stop').click(function(e) {
e.preventDefault();
track.stop();
});
});


});

});

寻找一些建议。提前致谢。卡斯帕

最佳答案

注意:我不确定如何修复该错误,因为我没有使用过该 API。但是,我确实看到您的代码存在一个问题,一旦您将轨道附加到 HTML 中,该问题就会导致错误。

建议:使用类而不是 ID。如果您使用相同的 ID 将多个轨道加载到页面上,则在尝试通过 JavaScript/jQuery 与它们交互时将不会获​​得理想的结果。

此外,将.click 方法移到.each 之外。无需为您附加的每个轨道重复创建相同的事件监听器。您甚至可以将这些方法放在 SC.get 函数之外。

// with classes
SC.get('/users/' + USER + '/tracks', function(tracks) {

var count = 0;

$(tracks).each(function(index, track) {
count++;

$('#playlist').append($('<li></li>').html('<a href="#" class="start">Start</a> <a href="#" class="stop">Stop</a>' + count + ' / ' + track.title + ' - ' + track.playback_count));
//$('#cover').append($('<li></li>').css('background-image', "url('" + track.artwork_url + "')");
$("#cover").append('<div><img src="' + track.artwork_url.replace('-large', '-t500x500') + '"></div>');
});

SC.stream('/tracks', function(track) {
$('.start').click(function(e) {
e.preventDefault();
track.start();
});

$('.stop').click(function(e) {
e.preventDefault();
track.stop();
});
});
});

如果您愿意,您可以使用 ID 执行此操作,但是您必须更改设置 ID 的方式以使其唯一:

// with IDs
SC.get('/users/' + USER + '/tracks', function(tracks) {

var count = 0;

$(tracks).each(function(index, track) {
count++;

$('#playlist').append($('<li></li>').html('<a href="#" id="start_' + count + '">Start</a> <a href="#" id="stop_' + count + '">Stop</a>' + count + ' / ' + track.title + ' - ' + track.playback_count));
//$('#cover').append($('<li></li>').css('background-image', "url('" + track.artwork_url + "')");
$("#cover").append('<div><img src="' + track.artwork_url.replace('-large', '-t500x500') + '"></div>');
});

SC.stream('/tracks', function(track) {
$('[id^="start_"]').click(function(e) {
e.preventDefault();
track.start();
});

$('[id^="stop_"]').click(function(e) {
e.preventDefault();
track.stop();
});
});
});

关于javascript - 如何为每个轨道添加播放和停止按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957451/

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