我正在尝试分配一个布尔值,以便在单击类.ion-ios-pause
时进行更改。如果单击它,则之后不应运行player.skipTo(player.playlist.length-1);
行。但是,invalid
变量总是假的(除了我在.click()
中的console.log之外。我认为,因为我声明我的变量超出了两个语句的范围,所以变量应该改变以外的状态.click()
函数的范围也是如此,但它没有。我缺少什么?
function clickSongPlay(artist, title, url, imageURL) {
//debugger;
player.playlist.push(
{
title: title,
artist: artist,
file: url,
imageURL: imageURL,
howl: null
}
);
////HERE IS THE CODE SNIPPET/////
var invalid = false;
$(".ion-ios-pause").click(function () {
player.pause();
invalid = true;
});
if (invalid === false) {
player.skipTo(player.playlist.length - 1);
}
//////END RELEVANT CODE SNIPPET///////
}
HTML:
<div><i class="icon ion-ios-play music-control" onclick="clickSongPlay('@song.Artist','@song.Title','@song.URL','@song.Album.ImageURL', this);"></i></div>
答案 0 :(得分:1)
我不确定您要实现的目标,但是当您的主要功能被调用def palindrome(word):
if ' ' in word:
word = word.replace(' ', '')
palindrome = reversed(word)
for letter, rev_letter in zip(word, palindrome):
if letter != rev_letter:
return 'Not Palindrome'
return 'Palindrome'
时,它会将变量clickSongPlay
设置为invalid
,将false
侦听器附加到{ {1}} 但此时不执行,然后检查click()
语句。
您的$(".ion-ios-pause")
语句仅在调用main函数时执行,而不是在单击后执行,每当您调用该函数时,它都会将值重置为false,因此您将始终以{{1}结束声明执行。
最简单的解决方法是获取if
并将其置于功能之外。您可能还希望将整个单击侦听器放在函数范围之外。
答案 1 :(得分:1)
你的问题是在click
事件被触发后你也应该进行验证检查。你可以做一些像下面的代码:
var invalid = false;
function clickSongPlay(artist, title, url, imageURL) {
//debugger;
player.playlist.push(
{
title: title,
artist: artist,
file: url,
imageURL: imageURL,
howl: null
}
);
$(".ion-ios-pause").click(function () {
player.pause();
invalid = true;
validationCheck();
});
validationCheck();
}
function validationCheck()
{
if (invalid === false)
{
player.skipTo(player.playlist.length - 1);
}
}