我正在建立一个“调整名称”的名字。使用iTunes API的网络应用程序。我向iTunes提交了一个搜索请求并获取了一个JSON对象。然后我存储previewURL(歌曲片段)和trackName(歌曲名称)。我使用trackName检查用户是否提交了正确的猜测,当猜测错误时我用它在UI上显示歌曲名称,以便用户知道正确的答案是什么。
问题: 1.在UI上显示歌曲名称时,它显示为[对象对象]。但是,它会正确显示在控制台上 - 即它显示歌曲名称。在我的例子中,这首歌是' backroads'。 2.检查猜测是否正确的功能不起作用。每一个猜测,即使是正确的猜测,都显示为不正确......我猜我会期待问题#1。
我尝试过的事情:
1.搜索其他类似问题,但没有找到任何正确的问题。
2.使用a来改变变量。同样糟糕的结果。
3.将songName作为参数传递给第二个函数。
以下是有问题的JS代码。
// when user clicks Play get song preview from iTunes and play, show songguess and hide genresection
$("button#playSong").click(function(){
$('.genreSection').hide();
$('#guessFields').show();
// get genre user selected
var genreSelected = $('input[type="radio"]:checked').val();
console.log("Genre selected is: "+genreSelected);
// get song for genre selected
$.post("https://itunes.apple.com/search?kind=song&limit=1&term="+genreSelected,
// Get song preview url and define to audio source 'src' to play the song preview
function(data){
console.log(data);
// get song name
var songName = data.results[0].trackName;
console.log("Song name is: "+songName);
$("#songAudio").attr("src",data.results[0].previewUrl);
$("#audioCtrl")[0].load();
$("#audioCtrl")[0].play();
},
'json'); // identifies the format of the data returned
});
// when user submits guess
$("button#guessSong").click(function(songName){
// get countdown seconds remaining
// if countdown is less than 1, hid submit button and display message "too late"
// get value of song guess
var songGuess = $("#songGuess").val();
console.log("Song guess is: "+songGuess);
// hide input field and button
$('#guessFields').hide();
// check if guess is correct
if(songGuess === songName) {
// increment correct guess counter
correctGuessCounter++;
console.log("Correct guess counter is "+correctGuessCounter);
// display you are correct message
$("#results").html("Correct! Your points for that guess are "+correctGuessCounter);
}else {
//convert songname to string
songName = songName.toString();
// display you are correct message
$("#results").html("Sorry, wrong answer. The correct song name is "+songName+".");
}
答案 0 :(得分:-1)
songName
是函数的参数。由于它是一个点击事件,songName
的值将是一个事件对象,而不是一个歌曲名称。
我不确定您打算如何存储歌曲名称,但您可能希望将其存储在变量或其他内容中,超出单击函数的范围,以便它们都可以看到它。
在两个函数上方声明songName
:
var songName;
// when user clicks Play get song preview from iTunes and play, show
// songguess and hide genresection
$("button#playSong").click(function(){
请务必从分配行上的var
移除songName
,否则它会隐藏上方的songName
。
// Get song preview url and define to audio source 'src' to play the song preview
function(data){
console.log(data);
// get song name
songName = data.results[0].trackName;
console.log("Song name is: "+songName);
确保从参数列表中删除songName
,否则它也会隐藏外部列表。
// when user submits guess
$("button#guessSong").click(function(){
...
// check if guess is correct
if(songGuess === songName) {
...