我一直在使用 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 添加到外部文件时,画布元素不起作用,但 jquery 起作用。javascript 在 canvas 元素之后加载,因为我的外部 javascript 在结束 body 标记之前链接,此外,如果我从外部文件中删除所有 jquery,canvas 元素将再次开始工作。
为什么是这样?
谢谢
编辑
我现在还尝试将画布代码放在 jquerys 文档就绪函数内部和外部,但它仍然无法正常工作。我将画布代码包装在一个匿名函数中仍然无济于事,甚至尝试使用 jquery 本身选择画布元素,如下所示;
var canvas = $('canvas')[0];
但它还是不想知道。将画布代码放在所有 jquery 之前然后画布代码执行但 jquery 没有,我真的很困惑!将它分开并不打扰我,但我想知道它为什么会发生。
再次感谢。