Javascript 当通过样式标记完成时,为什么不将画布放置在浏览器中?
我遇到了画布未写入浏览器的问题,我正在按照w3schools教程构建一个基本游戏 我想知道为什么在样式标记中画布的位置下,主体块没有增长。javascript是一个外部文件,canvas标记的尺寸在这里指定 CSS调用应该有一个线程,HTML/Javascript调用应该有一个线程,为什么这段代码没有为我的画布定义块Javascript 当通过样式标记完成时,为什么不将画布放置在浏览器中?,javascript,html,canvas,Javascript,Html,Canvas,我遇到了画布未写入浏览器的问题,我正在按照w3schools教程构建一个基本游戏 我想知道为什么在样式标记中画布的位置下,主体块没有增长。javascript是一个外部文件,canvas标记的尺寸在这里指定 CSS调用应该有一个线程,HTML/Javascript调用应该有一个线程,为什么这段代码没有为我的画布定义块 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=de
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<style>
canvas {
border:1px solid #d3d3d3;
background-color: #f1f1f1;
}
</style>
<script type="text/javascript" src="/Users/cgoodwin/game/g.js">
window.onload = start;
</script>
</body>
</html>
我在gamePiece上添加了一个带有开发者工具的Watch表达式,它说它没有定义。很可能,这是我的问题,但为什么不给它下定义呢?可能是游戏更新触发了它在任何给定实例中的未定义,在评估每20毫秒清除和更改的内容时,添加手表可能不起作用
为什么这段代码没有为我的画布定义块
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<style>
canvas {
border:1px solid #d3d3d3;
background-color: #f1f1f1;
}
</style>
<script type="text/javascript" src="/Users/cgoodwin/game/g.js">
window.onload = start;
</script>
</body>
</html>
因为你没有画布
元素可以通过以下两种方式之一加载JavaScript
通过src属性
通过放置在开始和结束标记之间的JS
这是您的代码:
由于脚本是通过src属性加载的,因此忽略window.onload=start
因为您从未调用start,所以元素从未添加到DOM中
移动第二个脚本,使其成为:
g.js的一部分
在它自己的元素中
另外,为什么在组件功能中需要这样做?这就是w3学校所拥有的。它是否会保留宽度/高度等的全局定义,可能不是全局定义,而是以前函数中这些变量的定义?因此,这只是确保在运行时将变量设置为该函数的上下文?它必须是:window.onload=start。注意小写的onload。不要使用符号调用函数,只需传递函数对象,否则它将立即被调用…@philipp欣赏它,有什么区别,所以你说它不会立即被调用?仍然没有为浏览器绘制画布。var x=start调用函数并将结果分配给x,而var x=start将函数本身分配给x,那么您可以使用var y=x。使用window.onload=…可以要求浏览器在加载时调用给定的函数。这是非常基本的JS…@philipp,那么你会说var x=start存储函数start的地址,而var x=start只是在内存中x所在的位置放置一个字符串作为值吗?因此,后一种情况只是简化了冗长的内容,而前一种情况是建立一个指向函数调用返回的指针?成功地在浏览器上绘制了画布,谢谢@Quentin
<script type="text/javascript" src="/Users/cgoodwin/game/g.js">
window.onload = start;
</script>