setInterval 动态生成多个不同颜色

练手用小功能:

vue 中DOM选择
动态添加 Object 数据绑定
setInterval 循环控制
Math.floor取整 padEnd补零

DOM部分

生成颜色的数量由 v-for 的循环数控制

        

{{testColor[index-1]}} {{index}} {{Object.keys(testColor).length}} 随机颜色

根据标签初始化保存颜色的对象

用set添加能有数据绑定关系;
【注】开始使用数组记录颜色,由于JS 监听不到数组值的变化才改用的对象;
$refs 的DOM操作需要创建完 vue 实例后再执行,否则拿不到 children 的数量

data() {
        return {
            testColorInterval: '',
            testColor: { }
        }
mounted() {
        for (let k=0;k

循环生成颜色 和 停止/启动循环

testClick 是用来停止/启动循环
tColor 是循环生成颜色

methods: {
        testClick() {
            if (this.testColorInterval != '') {
                clearInterval(this.testColorInterval);
                this.testColorInterval = '';
            } else {
                this.tColor();
            }
        },
        tColor() {
            let _this = this;
            this.testColorInterval = setInterval(() => {
                for (let key in _this.testColor) {
                    _this.testColor[key] = `color: #${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
                }
            }, 300);
        }
}

你可能感兴趣的