Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当通过样式标记完成时,为什么不将画布放置在浏览器中?_Javascript_Html_Canvas - Fatal编程技术网

Javascript 当通过样式标记完成时,为什么不将画布放置在浏览器中?

Javascript 当通过样式标记完成时,为什么不将画布放置在浏览器中?,javascript,html,canvas,Javascript,Html,Canvas,我遇到了画布未写入浏览器的问题,我正在按照w3schools教程构建一个基本游戏 我想知道为什么在样式标记中画布的位置下,主体块没有增长。javascript是一个外部文件,canvas标记的尺寸在这里指定 CSS调用应该有一个线程,HTML/Javascript调用应该有一个线程,为什么这段代码没有为我的画布定义块 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=de

我遇到了画布未写入浏览器的问题,我正在按照w3schools教程构建一个基本游戏

我想知道为什么在样式标记中画布的位置下,主体块没有增长。javascript是一个外部文件,canvas标记的尺寸在这里指定

CSS调用应该有一个线程,HTML/Javascript调用应该有一个线程,为什么这段代码没有为我的画布定义块

<!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>