Function being used, when it isn't a function?

时间:2015-07-28 17:11:24

标签: javascript

Battle.CreateInputs = function(json) {
if (json.Battle.Continue !== undefined) {
    $('#attackBox').css('display', 'none');
    $('#Continue').mousedown(function(e) {
        Battle.PlaySound('die')
        Battle.Continue($(this).attr('continue'), e);
        return false;
    });
} else if (json.Battle.Captcha !== undefined) {
    $('#attackBox').css('display', 'none');
    $('#CaptchaForm').submit(function(e) {
        Battle.PlaySound('captcha')
        Battle.SubmitCaptcha($('#Captcha').val(), e);
        return false;
    });
} else if (json.Battle.Restart !== undefined) {        
    $('#attackBox').css('display', 'none');
    $('#Restart').click(function(e) {
        Battle.PlaySound('coin')
        Battle.Restart($(this).attr('restart'), e);
        return false;
    });
} else {
    $('#attackBox').css('display', 'inline-block');
    $('input').mousedown(function(e) {
        Battle.PlaySound('hit')
        Battle.Move($(this).attr('post_code'), e);
        return false;
    });
}}; 

So, this is the code that I'm having problems with. I always receive the error "Battle.PlaySound is not a function". Here is a link to the Javascript and the code snippet that I was using.

My Code - http://pastebin.com/BnHLaYN3

Site Javascript - http://pastebin.com/0NcyWvGn

1 个答案:

答案 0 :(得分:3)

Battle.PlaySound is indeed not a function. As per your code:

Battle.PlaySound = {};

You are defining it as an object.

Should be something like this instead:

Battle.PlaySound = function(sound) {
    //Do something with sound here.
};