2017-09-23 1 views
-1

Ich versuche, einen Boolean zu ändern, wenn eine Klasse .ion-ios-pause angeklickt wird. Und wenn es angeklickt wird, sollte es danach nicht die player.skipTo(player.playlist.length-1); Zeile ausführen. Allerdings ist die invalid Variable immer falsch (außer wenn ich console.log innerhalb der .click(). Ich dachte, dass, da ich meine Variable außerhalb des Bereichs der beiden Aussagen erklärte, dass die Variable außerhalb des Bereichs der .click() Funktion auch ändern sollte ., aber es funktioniert nicht Was bin ichBoolesche Variable, die nicht den aktuellen Status behält

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> 

Antwort

1

ich bin nicht sicher, was Sie versuchen zu erreichen, aber wenn Ihre Hauptfunktion clickSongPlay aufgerufen wird, setzt die Variable invalid bis false verbindet den click() Listener mit $(".ion-ios-pause"), aber es führt es nicht an diesem Punkt aus und dann überprüft es die if Anweisung.

Ihre if-Anweisung wird nur ausgeführt, wenn die Hauptfunktion aufgerufen wird und nicht nach einem Klick und wenn Sie diese Funktion aufrufen, wird der Wert auf false zurückgesetzt, sodass Sie immer mit der Ausführung der if-Anweisung enden.

Die einfachste Lösung ist, die var invalid = false; zu bekommen und sie außerhalb Ihrer Funktion zu platzieren. Sie können auch den gesamten Klicklistener außerhalb des Funktionsumfangs platzieren.

+1

Ich dachte: Warum ist der Click-Handler in dieser Funktion? Für mich ergibt das überhaupt keinen Sinn. –

+0

@DobromirM hey, du hast recht, es macht keinen Sinn, die Click-Funktion hinzuzufügen. Wenn Sie es jedoch entfernen, wird dieses Problem nicht behoben. Ich habe eine Wiedergabe btn auf dem Bildschirm, wenn es angeklickt wird, schaltet es auf eine Pause btn. Das Problem, das ich habe, ist, wenn ich auf Pause btn klicke, um den Song anzuhalten, wird der Song zurückgesetzt. Dies liegt daran, dass die skipTo-Methode immer noch irgendwie aufgerufen wird. –

1

Ihr Problem ist, dass nach click Ereignis ausgelöst wurde, sollten Sie Ihre Validierungsprüfung auch tun. Sie können etwas tun wie Code unten:

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); 
    } 
} 
+0

Mit dieser Methode wird der Song immer noch zurückgesetzt, was bedeutet, dass die skipTo-Methode immer noch aufgerufen wird –

+0

@JordanLewallen können Sie Ihren 'play'button click listen posten? – pooyan

+0

die HTML-Zeile, die 'onclick =" clickSongPlay() "' enthält? –

Verwandte Themen