我无法将点击的值传递给函数

时间:2015-06-23 03:30:21

标签: javascript jquery youtube-api

DEMO Static Value

您好, 我无法将Clicked Value传递给返回函数。

function getArtistId() {
            //return 'l-gQLqv9f4o';   if i uncomment this videos will work like charm, but instead of static i need dynamic onclick of the element getting the value and passing.
        return 'ytData1';
    }   

JS:

$(document).ready(function() {


var cVid, ytData1

$('.new li #c-vid').on('click', function(e) {
    $(this).each(function(i, obj) {
        e.preventDefault();
        cVid = document.getElementById('c-vid');
        ytData1 = $(this).attr('data-yt');
        console.log(ytData1)
        console.log("ready!");



        loadPlayer();



    })
});

});

function getArtistId() {
    return 'l-gQLqv9f4o';

    //return 'ytData1';
}           


function loadPlayer() {
if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {

    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    window.onYouTubePlayerAPIReady = function() {
        onYouTubePlayer();
    };
}
}

var player;

function onYouTubePlayer() {
player = new YT.Player('player', {
    height: '490',
    width: '880',
    videoId: getArtistId(),
    playerVars: {
        controls: 1,
        showinfo: 0,
        rel: 0,
        showsearch: 0,
        iv_load_policy: 3
    },
    events: {
        'onStateChange': onPlayerStateChange,
        'onError': catchError
    }
});
}

var done = false;

function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
    // setTimeout(stopVideo, 6000);
    done = true;
} else if (event.data == YT.PlayerState.ENDED) {
    location.reload();
}
}

function onPlayerReady(event) {

//if(typeof(SONG.getArtistId()) == undefined)
//{
//  console.log("undefineeeed"); 
//} 
//event.target.playVideo();   
}

function catchError(event) {
    if (event.data == 100) console.log("De video bestaat niet meer");
}

function stopVideo() {
    player.stopVideo();
}

因为我无法将Clicked Value传递给返回功能。

很难在这段代码中找到问题,请帮帮我....

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是使用window.variable

来使用全局变量
$('.new li #c-vid').on('click', function(e) {
    $(this).each(function(i, obj) {
        e.preventDefault();
        cVid = document.getElementById('c-vid');
        window.artist_id = $(this).attr('data-yt');

        loadPlayer();
    })
});

然后只需更新getArtistId功能

function getArtistId() {
  return window.artist_id;
}