我有一个小脚本加载到我使用jQuery从last.fm收听的最后一首歌中,如下所示:
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.append(artistVal + " \u2014 " + trackVal); });
有什么方法可以让它删除已附加到<span class="song"></span>
的内容并再次加载?对于我的生活,我无法找到一种不会复制这首歌的方式。
编辑:但是,它首次加载时有延迟。有没有办法可以让它运行一次,然后每3秒刷新一次?
function listens() {
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.html(artistVal + " \u2014 " + trackVal);
});
}
setInterval(listens, 3000);
编辑2:这摆脱了滞后,只是有一种方法可以减少它吗?
listens();
function listens() {
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.html(artistVal + " \u2014 " + trackVal);
});
}
setInterval(listens, 3000);
答案 0 :(得分:2)
你的问题是jQuery的.append()
好,追加。它附加或添加到元素中的现有HTML中。你想完全替换元素的HTML,所以你的方法应该是这样的:
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.html(artistVal + " \u2014 " + trackVal); });
来自jQuery API:
设置匹配元素集中每个元素的HTML内容。
答案 1 :(得分:0)
这对我来说足够好。
listens();
function listens() {
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.html(artistVal + " \u2014 " + trackVal);
});
}
setInterval(listens, 2000);