私はjqueryとcanvasを使用して(一緒ではなく)少しコーディングをいじっています。
私は外部のjavascriptファイルを持っていて、その中には;が含まれています。
$(document).ready(function() {
/*
NAME CHOOSER
*/
var carl = ['Sha', 'Shads', 'Cai', 'Moon', 'Sun', 'Staffy',];
var rosie = ['Mum',];
var prev;
$('button').click(function() {
prev = $('h2').text();
$('h2').empty().text(carl[Math.floor(Math.random() * carl.length)] + rosie[Math.floor(Math.random() * rosie.length)]).after('<p>' + prev + '</p>');
});
});
また、canvas要素用のインラインJavaScriptもあります。
<script>
var canvas = document.getElementById('draw');
if(canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
ctx.fillRect(0, 0, 800, 500);
}
</script>
キャンバスにインラインJavaScriptを使用し、jqueryに外部ファイルを使用して分離すると、すべてが正常に機能し、期待どおりに機能します。
インラインキャンバスJavaScriptを外部ファイルに追加すると、canvas要素は機能しませんが、jqueryは機能します。外部のjavascriptが終了bodyタグの直前にリンクされているため、javascriptはcanvas要素の後に読み込まれます。さらに、外部ファイルからすべてのjqueryを削除すると、canvas要素が再び機能し始めます。
どうしてこれなの?
ありがとう
編集
また、jquerys document ready関数の内側と外側にキャンバスコードを配置しようとしましたが、まだ機能していません。私はキャンバスコードを無名関数でラップしましたが、まだ役に立ちません。また、以下のようにjquery自体でキャンバス要素を選択しようとしました。
var canvas = $('canvas')[0];
しかし、それでも知りたくありません。すべてのjqueryの前にキャンバスコードを配置すると、キャンバスコードが実行されますが、jqueryは実行されません。私は本当に困惑しています!それを分離しておくのは面倒ではありませんが、なぜそれが起こっているのか知りたいです。
再度、感謝します。