0

ボタンを切り替えた後、jqueryを使用してGoogleマップをロードしています:

function loadScript() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://maps.googleapis.com/maps/api/js?v=3.11&key=AIzaSyCK3XUMWOH0GIiuj3VeprakKZXoo_nDV08&sensor=true&' +
        'callback=initialize';
    document.body.appendChild(script);
}

(function ($) {
    $(document).ready(function () {
        //Show map on category pages
        $(function () {
            $("#showonmap a").toggle(function () {
                $(this).children("#show_map").hide();
                $(this).children("#hide_map").show();
                //Reveal google maps multi
                //First create empty divs, if they exist don't create them
                if ($("#googlemap_multi").length == 0) {
                    $("#subheadergradient").before('<div class="googlemap_margin"></div><div id="googlemap_multi"></div><div class="googlemap_margin"></div>');
                }
                $(".googlemap_margin").fadeIn("slow", function () {
                    $("#googlemap_multi").animate({
                        height: 400
                    }, "slow", function () {
                        //load google maps
                        loadScript().load();
                    });
                });
            }, function () {
                $(this).children("#hide_map").hide();
                $(this).children("#show_map").show();
                //Hide google maps multi
                $("#googlemap_multi").animate({
                    height: 0
                }, "slow", function () {
                    $(".googlemap_margin").fadeOut("slow");
                });
            });
        });
    });
}(jQuery));

しかし、これはエラーを生成します:

Uncaught TypeError: Cannot call method 'load' of undefined localhost:482
(anonymous function) localhost:482
d.complete jquery.min.js:4
f.fx.step jquery.min.js:4
h jquery.min.js:4
f.extend.tick

したがって、トグルバック機能は実行されません。

この部分:

//Hide google maps multi
$("#googlemap_multi").animate({height: 0},"slow", function(){
    $(".googlemap_margin").fadeOut("slow");
});

何が問題ですか?

ty。

4

3 に答える 3

1

の結果にloadScript()はメソッドがありませんload()。スクリプトをロードするだけです(非同期!)。

どちらload()を実行しようとしていますか?

于 2013-03-23T14:44:37.903 に答える
1

あなたが呼んでいる

loadScript().load();

ただし、メソッドにはステートメントloadScriptがないため、基本的にはでメソッド(チェーン)をreturn呼び出しています。loadundefined

于 2013-03-23T14:45:16.733 に答える
1

.load()何も返さない関数を呼び出そうとするのはなぜですか?

loadScript(); またはを呼び出すか、loadScript関数にメソッドを持つオブジェクトを返すようにしますload

于 2013-03-23T14:45:18.083 に答える