1

このコードで何日も立ち往生しました。コンソールで関数が定義されていないと表示される理由がわかりません。コードは次のとおりです。ところで、私はjQueryの初心者で、本当にあまり知識がないので、助けてもらえますか? このエラーが発生している場所を誰かに教えてもらえますか

(ReferenceError: createGraph が定義されていません)

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>

        <script src="bin/js/raphael.js"></script>
        <script src="bin/js/popup.js"></script>
        <script src="bin/js/analytics.js"></script>
</head>
<body>

 <div class="action-button">
    <button id="1" value="1074">Button 1</button>
    <button id="2" value="1074">Button 2</button>
 </div>

  <div id="output"></div>

<script>
/////////////////////////////////////////////////////
// this script will check if the document is ready and will display data for button 1
     $(document).ready(function () {
    $("#1").trigger("click");
    });

    ///////////////////////////////////////////////////////////////////////////////////////
        $("button").click(function () {
          var attr = $(this).attr("id");
          var val = $(this).val();

          $.ajax({
          type: "POST",
          url: "bin/some.php",
          data: { lookbookID: val, type:attr  }
    }).done(function( html ) {
      $("#output").html(attr + ' - ' +  val + ' - ' + html );
        createGraph();

    });
});
</script>
</body>
</html>

そしてJSコード

window.onload = function () {
    function getAnchors(p1x, p1y, p2x, p2y, p3x, p3y) {
        var l1 = (p2x - p1x) / 2,
            l2 = (p3x - p2x) / 2,
            a = Math.atan((p2x - p1x) / Math.abs(p2y - p1y)),
            b = Math.atan((p3x - p2x) / Math.abs(p2y - p3y));
        a = p1y < p2y ? Math.PI - a : a;
        b = p3y < p2y ? Math.PI - b : b;
        var alpha = Math.PI / 2 - ((a + b) % (Math.PI * 2)) / 2,
            dx1 = l1 * Math.sin(alpha + a),
            dy1 = l1 * Math.cos(alpha + a),
            dx2 = l2 * Math.sin(alpha + b),
            dy2 = l2 * Math.cos(alpha + b);
        return {
            x1: p2x - dx1,
            y1: p2y + dy1,
            x2: p2x + dx2,
            y2: p2y + dy2
    };
}

    function createGraph() {
       // Grab the data
       alert("i made it!");
        var labels = [],
            data = [];
        $("#data tfoot th").each(function () {
        labels.push($(this).html());
        });
        $("#data tbody td").each(function () {
            data.push($(this).html());
        });

     }
    };

これを更新して申し訳ありませんwindow.onloadが、まだその参照エラーが発生することを除外しましたが、関数を外部に配置すると関数window.onload = functionが機能します関数にアクセスできる方法はありますか? 上記のコードを I need help again から削除するとどうなるかわかりませんwindows.onload:)

関数のリンクが役立つ場合に備えて https://github.com/ksylvest/raphael-analytics

4

2 に答える 2

2
function createGraph() {
// Grab the data
    var labels = [],
        data = [];
    $("#data tfoot th").each(function () {
        labels.push($(this).html());
    });
    $("#data tbody td").each(function () {
        data.push($(this).html());
    });

   //code here i erased so it wont be too long and i just added this function so i could call it anyway this code is actually the code that creates the graph in raphael JS
 }
于 2013-05-10T17:07:38.253 に答える
1

createGraph はグローバル関数ではありません. $() は新しいコンテキストを作成するため、createGraph はローカル変数になるため、呼び出そうとするとエラーになります.

$() から出しましょう。

Upstairs..のようなコード

于 2013-05-10T17:13:55.937 に答える