布尔变量不保持当前状态
Boolean variable not keeping current state
我正在尝试分配一个布尔值以在单击 class .ion-ios-pause
时进行更改。如果它被点击,那么它之后不应该 运行 player.skipTo(player.playlist.length-1);
行。但是,invalid
变量始终为 false(除了 .click()
中的 i 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>
我不确定你想要实现什么但是当你的主要功能被调用时 clickSongPlay
它设置变量 invalid
到 false
附加 click()
侦听器到 $(".ion-ios-pause")
但它此时不执行它 然后它检查 if
语句。
您的 if
语句仅在调用 main 函数时执行,而不是在单击后执行,无论何时调用该函数,它都会将值重置为 false,因此您将始终以 if
语句正在执行。
最简单的解决方法是获取 var invalid = false;
并将其放在您的函数之外。您可能还想将整个点击侦听器放在函数范围之外。
你的问题是在 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);
}
}
我正在尝试分配一个布尔值以在单击 class .ion-ios-pause
时进行更改。如果它被点击,那么它之后不应该 运行 player.skipTo(player.playlist.length-1);
行。但是,invalid
变量始终为 false(除了 .click()
中的 i 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>
我不确定你想要实现什么但是当你的主要功能被调用时 clickSongPlay
它设置变量 invalid
到 false
附加 click()
侦听器到 $(".ion-ios-pause")
但它此时不执行它 然后它检查 if
语句。
您的 if
语句仅在调用 main 函数时执行,而不是在单击后执行,无论何时调用该函数,它都会将值重置为 false,因此您将始终以 if
语句正在执行。
最简单的解决方法是获取 var invalid = false;
并将其放在您的函数之外。您可能还想将整个点击侦听器放在函数范围之外。
你的问题是在 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);
}
}