0

私は raphaelJS の peepcode チュートリアルを完了する過程にあり、次のエラーに遭遇しました: Uncaught TypeError: undefined is not a function when using the following callback function within JQuery.

self.plotArray = function (theArray, drawingCallback) {
    $(theArray).each(function (i, release) {
        var xOffset = 0
            , timeOffset = release.date.getTime() - self.startTime
            , timeRatio = timeOffset / self.timeSpan
            , graphWidth = self.paper.width - self.dotRadius * 2;
        xOffset = graphWidth * timeRatio + self.dotRadius;
        drawingCallback(release, xOffset);
    });
};

drawingCallback 関数が呼び出されると、このエラーが発生します。私は peepcode から完成したソリューションを見ましたが、このコードが行っていることと非常に似ているように見えました。私がJavascriptの初心者であることは役に立ちませんか? この問題を解決するためのアイデアをいただければ幸いです。

以下は、app.js が呼び出されている場所からの index.html です。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/raphael.js"></script>
<script type="text/javascript" src="js/app.js"></script>

app.js の完全なコードを添付します。

    function Timeline(domID, width, height, releases) {
        if (!(this instanceof arguments.callee)) {
            return new arguments.callee(arguments);
        }

        var self = this;
        self.init = function () {
            self.paper = Raphael(domID, width, height);
            self.dotRadius = 26;

            self.parseDates();
            self.draw();
        };

        self.parseDates = function () {
            self.parsedReleases = [];

            $(releases).each(function (i, release) {
                var epochSeconds = Date.parse(release.date),
                    parsedDate = new Date(epochSeconds);

                self.parsedReleases.push({date:parsedDate,
                    version:release.version});
            });

            self.startTime = self.parsedReleases[0].date.getTime();
            var endTime = $(self.parsedReleases).last()[0].date.getTime();
            self.timeSpan = endTime - self.startTime;

        };

        self.draw = function () {
            self.plotArray(self.parsedReleases);
        };

        self.plotArray = function (theArray, drawingCallback) {
            $(theArray).each(function (i, release) {
                var xOffset = 0
                    , timeOffset = release.date.getTime() - self.startTime
                    , timeRatio = timeOffset / self.timeSpan
                    , graphWidth = self.paper.width - self.dotRadius * 2;
                xOffset = graphWidth * timeRatio + self.dotRadius;
                drawingCallback(release, xOffset);
            });
        };

        self.drawDotAndLabel = function (release, xOffset) {
            var dot, label;
            dot = self.paper.circle(xOffset, self.dotRadius, self.dotRadius);
            dot.attr({
                'stroke-width':0,
                'fill':'#7E2217',
                'fill-opacity':1.0
            });

            label = self.paper.text(xOffset, self.dotRadius, release.version);
            label.attr({
                'fill':'#ffffff',
                'fontSize':20,
                'fontFamily':"'Garamond', 'Franklin Gothic Medium', 'Gill Sans MT Condensed', 'Arial Narrow',  'sans-serif'"
            });
        };

        self.init();
    }

    var timeline;

    jQuery(function () {
        timeline = new Timeline('timeline', 940, 81, [
            {date:"June 25, 2004", version:"0.5"},
            {date:"December 13, 2005", version:"1.0"},
            {date:"March 18, 2006", version:"1.1.0"},
            {date:"January 28, 2007", version:"1.2.0"},
            {date:"December 7, 2007", version:"2.0.0"},
            {date:"May 31, 2008", version:"2.1.0"},
            {date:"November 21, 2008", version:"2.2.2"},
            {date:"March 15, 2009", version:"2.3.2"},
            {date:"November 26, 2009", version:"2.3.5"},
            {date:"July 26, 2010", version:"3 RC1"},
            {date:"August 30, 2010", version:"3.0"}
        ]);
    });
4

0 に答える 0