用javascript创建的文档元素的范围
Scope of document elements created in javascript
我是javascript和web开发的新手,我正在尝试编写一个渲染器,可以将CT扫描中的每个切片绘制为2D图像。
我有一个由512x97个切片制成的细长(512x49664)图像,每个切片只有512x512个图像。我已经确定这会让webgl感到不安,所以我计划通过在画布上绘制图像并将图像数据复制到纹理中来从图像中获取单个切片。
我的问题是:如果我有一个函数,我可以做一些类似的事情:
// Create a small canvas to contain a single slice.
function getSlice(sliceNumber){
var sliceCanvas = document.createElement("canvas");
sliceCanvas.width = 512;
sliceCanvas.height = 512;
var sliceContext = sliceCanvas.getContext('2d');
sliceContext.drawImage(image, 0, 512*sliceNumber, 512, 512, 0, 0, 512, 512);
}
当函数退出时,我创建的画布会发生什么?
它还没有:
- 添加到DOM
- 存储在仍在作用域中的变量或属性中
- 返回任何位置
…已经没有对它的引用了,所以它将被标记为垃圾回收。
通过javascriptDOM API创建DOM元素时,应将此元素附加到页面文档。
否则,此元素将永远不会显示在您的页面中。
所以你必须在你的代码中添加这样一行:
document.body.appendChild(sliceCanvas);
如果您多次调用函数,则应检查画布创建:
var sliceCanvas = document.getElementsByTagName('canvas')[0];
或
var sliceCanvas = document.getElementById('myCanvasId');
然后检查:
if (!sliceCanvas) {
sliceCanvas = document.createElement('canvas');
sliceCanvas.id = 'myCanvasId'; // optional
document.body.appendChild(sliceCanvas);
}
// here your code...
更新:
考虑在要放置画布的位置使用适当的DOM元素来更改document.body
。
相关文章:
- 在MVVM视图模型中处理应用程序范围的元素
- 如何设置范围元素'的拇指
- html,js-如何限制元素"范围“-命名空间
- JavaScript:将输入范围行为链接到另一个元素
- 如何从不同范围外的元素属性中获取求值表达式
- 访问内部功能范围的元素,而不是敲除中的外部
- 范围和列表元素在 DIV 中换行
- 基于范围数据更改指令模板中的元素
- 获取范围中包含的HTML元素
- 将持久活动类附加到导航栏范围中的导航元素(AngularJS)
- 如何选择html5范围's在JavaScript中的伪元素
- 如何获取数组第一个元素的范围
- 隔离范围元素上的角度动画
- 使用 Jquery 将元素的一些文本包装在一个范围中
- 隐含:元素和范围
- 控制器和指令请求同一元素上的隔离范围
- 使用jQuery和CSS选择元素范围
- 如何用js/jquery显示相同类的元素范围
- 当拖动结束时,HTML输入元素范围检测
- 没有jQuery的分页.如何选择具有相同类的元素范围?我的逻辑说得通吗?