javascript - 是否可以创建一个在js中创建特定Dom元素的模块?

标签 javascript

我有一个问题。是否可以在 Javascript 中创建一个实例化 Dom 元素的模块?例如,我有 Canvas 类。

class Canvas {

    constructor(width, height, context){
        this.width = width;
        this.height = height;
        this.context = context;
        this.setupCanvas();
    }

    setupCanvas(){
        console.log(this.width, this.height, this.context);
        let canvas = document.createElement('canvas');

        canvas.width = this.width;
        canvas.height = this.height;

        let context = canvas.getContext(this.context);
        context.fillStyle = 'red';

        return canvas;
    }
}

export default Canvas;

我对格式错误感到抱歉,但我不知道如何改进。 该模块导出整个类,之后,我想在一个文件中使用它,我们将其称为 index.js。在那里,我通过调用 import Canvas from './Canvas/canvas 导入模块。所以其余的代码看起来像

import Canvas from './Canvas/canvas';

let canvas = new Canvas(80, 80, '2d');
canvas.setupCanvas;
document.body.appendChild(canvas);

现在它不起作用,因为我收到错误:TypeError: Node.appendChild 的参数 1 ('node') 必须是 Node 的实例

最佳答案

您的代码有两个问题。首先,您的 Canvas 类不是 Canvas 节点,但具有用于创建 Canvas 的函数 setupCanvas。接下来,您的目标是调用 setupCanvas 两次:一次从构造函数调用,然后使用 canvas.setupCanvas; 调用。但请注意,canvas.setupCanvas; 没有执行任何操作,因为您缺少 ()

您可以做的是首先从构造函数中删除 this.setupCanvas() ,然后在稍后调用它时使用 setupCanvas 的结果:

import Canvas from './Canvas/canvas';

let canvas = new Canvas(80, 80, '2d');
document.body.appendChild(canvas.setupCanvas());

关于javascript - 是否可以创建一个在js中创建特定Dom元素的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54959846/

相关文章:

javascript - 隐藏、取消隐藏选项卡上的内容更改

javascript - 在 route 使用航点 - Google map 路线服务

javascript - LinkedIn JavaScript API - 访问人员被拒绝

javascript - 在 JSColor 中,如何获取颜色的十六进制?

javascript - 如何使 document.getElementById ('id' ).value 返回一个数字而不是 Javascript 中的字符串

javascript - 在 AJAX 工作流方面需要帮助

javascript - 我想关闭一个已经打开的 div 并在我单击链接时显示另一个

javascript - 将字符串转换为数组并将其另存为新数组,不返回原始数组

php - 如何通过 javascript 或 jquery 交换单击时选中的单选按钮???附上我的代码

javascript - 同一循环中的两个不同超时