首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS内容生成问题

JS内容生成问题
EN

Stack Overflow用户
提问于 2022-09-27 20:10:57
回答 2查看 49关注 0票数 2

导论(类: )

首先,我为一杯咖啡生成5个咖啡豆。咖啡类具有属性强度,我希望灰出咖啡豆,即> strength (如下图所示)。

My CoffeeMachine类(简化):

代码语言:javascript
复制
class CoffeeMachine {
    constructor() {
        this.name = ""
        this.coffeeList = { list: [] }
        this.tokenList = { list: [] }
        this.shoppingCard = { list: [] }
    }
    addCoffe(coffee) {
        this.coffeeList.list.push(coffee)
    }
    addToken(token) {
        this.coffeeList.list.push(token)
    }
    addToCart(item) {
        this.shoppingCard.list.push(item)
    }
}

我的咖啡类(简化):

代码语言:javascript
复制
class Coffee {
    constructor() {
        this.name = ""
        this.price = 0
        this.time = 0.0
        this.imgsrc = ""
        this.strength = 0
        this.sugar = 0
        this.caffeine = 0
        this.values = []
        this.titelArray = ["caffeeine", "sugar", "time", "strength"]
        this.colors = ["#e34444", "#7944e3", "#44e35c", "#e3d044"]
    }
    setValues(name, price, time, strength, imgsrc, sugar, caffeine) {
        this.name = name
        this.price = price
        this.time = time
        this.strength = strength
        this.imgsrc = imgsrc
        this.sugar = sugar
        this.caffeine = caffeine
    }
    setCoffeeValues() {
        this.values = [this.caffeine + "mg", this.sugar + "g", this.time + "s", this.strength + "/5"]
    }

}

咖啡将被推入咖啡机的购物车清单,如下所示:

代码语言:javascript
复制
coffeeMachine.shoppingCard.list.push(coffeeMachine.coffeeList.list[index])

Init咖啡

代码语言:javascript
复制
coffeeLatte.setValues("Latte Macchiato", 1.60, 30.0, 3, "../pics/coffeeLatte.png", 18, 75)
        coffeeBlack.setValues("Black Coffee", 1.20, 20.0, 5, "../pics/coffeeBlack.png", 4, 95)
        coffeCappunchino.setValues("Cappuccino", 1.60, 35, 2, "../pics/coffeeCappuchino.png", 12, 64)

咖啡机类(Prolem)中的更新购物车方法:

我就是这样为列表中的每一种咖啡生成咖啡豆的:

代码语言:javascript
复制
  for (let i = 0; i < this.shoppingCard.list.length; i++) {
            for (let j = 0; j < 5; j++) {
                document.getElementsByClassName('beans')[i].innerHTML += `<img class="bean" src="../pics/bean.png"></img>`
            }
        }

在下面的代码中,我将一个<= coffee.strengtha的不透明度设置为100%,其他coffee.strengtha的不透明度设置为30%:

代码语言:javascript
复制
for (let i = 0; i < this.shoppingCard.list.length; i++) {
    for (let j = 0; j < this.shoppingCard.list[i].strength; j++) {
        document.getElementsByClassName('bean')[i].style.opacity = "1"
        if (j <= this.shoppingCard.list[i].strength){
            for (let k = this.shoppingCard.list[i].strength; k < 5; k++) {
                document.getElementsByClassName('bean')[k].style.opacity = "0.3"

            }
        }
    }
}  

在购物车上加了几杯咖啡之后,就会发生这样的情况:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-28 13:12:09

我认为这可以解决你的问题

代码语言:javascript
复制
for (let j = 1; j <= this.shoppingCard.list[i]; j++) {
    for (let k = 0; k < 5; k++) {
        if (k + 1 < this.shoppingCard.list[i].strength) {
            document.getElementsByClassName('bean')[0].children[k].style.opacity = "1"
        } else {
            document.getElementsByClassName('bean')[0].children[k].style.opacity = "0.3"
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2022-09-27 20:49:55

不确定所有循环的目的是什么,请试一试:

代码语言:javascript
复制
for (let i = 0; i < this.shoppingCard.list.length; i++) {
  let strength = this.shoppingCard.list[i].strength;
  for (let j = 0; j < 5; j++) {
    document.getElementsByClassName('bean')[i * 5 + j].style.opacity = j <= strength ? "1" : "0.3";
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73873312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档