1

我有这段代码让我卡了好几天我不明白为什么它在我的控制台中说我的函数没有定义这里的代码。顺便说一句,我是 jQuery 的超级新手,我真的没有太多的知识,所以有什么帮助吗?有人可以告诉我哪里出错了,它给了我这个错误

(参考错误: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那么我的函数就可以工作有什么办法可以访问我的函数吗?我不知道如果我从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 变成了一个局部变量,所以如果你试图调用它,你会得到一个错误。

所以把它从 $() 中释放出来。

楼上的代码..

于 2013-05-10T17:13:55.937 回答