1

1 つのキャンバスでより多くの Javascript ファイルを使用したいのですが、接続できません。たとえば、すべての関数を含む Javascript ファイルと、それらを使用している他の Javascript ファイルを書きたいとします。

ガイドを見せてください。どうすればこの接続を確立できますか?

ありがとう。

これは最初の JavaScript ファイルです。

var canvas = null;
var ctx = null;

window.onload = function () {
    canvas = document.getElementById('myCanvas');
    ctx = canvas.getContext('2d');

    line (100,100,300,300);
}

これは 2 番目のファイルです。

function line (x1,y1,x2,y2) {
    ctx.beginPath();
    ctx.moveTo(x1,y1);
    ctx.lineTo(x2,y2);
    ctx.stroke();
}

そして、これは私のhtmlファイルです:

<!DOCTYPE html>

<html>
<head>
    <title>Tutorialok</title>
    <script type="text/javascript" src="CanvasElement.js"></script>
    <script type="text/javascript" src="line.js"></script>
    <style>
        #myCanvas {
            border: 1px solid #9C9898;
        }
    </style>
</head>

<body>
    <canvas id="myCanvas" width="800" height="600">
        Sorry your browser Does not support canvas element!
    </canvas>

</body>
</html>

最初のファイルは 2 番目のファイル機能を見つけることができません。

4

3 に答える 3

0

関数が巻き上げられることを期待している場合、スクリプト ファイル間で機能するとは思えません。それぞれが個別に評価されるからです。CanvasElement.js がロードされたときに行がスコープ内にあるように、スクリプト タグを切り替えます。

それ以外の場合、リンクされたスクリプト間でグローバル名前空間が共有されます。

于 2012-12-23T14:54:46.157 に答える
0

経由で名前空間を使用しますObjects。すべての関数が 1 つのファイルに存在するパターンはお勧めしませんが、これは使用できるアイデアです。file2.js が何かを行う前に、file1.js をロードする必要があります。

// file1.js
window.namespace = window.namespace || {};

window.namespace.fns = {
    foo: function () {}
};

// file2.js
window.namespace.fns.foo();
于 2012-12-23T14:27:13.383 に答える
0

js ファイル 1

var f1 = function(){};
var f2 = function(){}

jsFile2

 var s1 = f1();
 var s2 = f2();

これをhtmlページで使用します

<script src="path/jsFile1.js"></script>
<script src="path/jsFile2.js"></script>
于 2012-12-23T14:31:45.810 に答える