类型错误。无法读取未定义的'innerText'属性 – 从eshop中删除。

我需要帮助 我正在做我的eshop。除了从购物车中删除一个对象外,一切都很正常。当我这样做的时候,价格没有改变。而且在控制台中写着:

“Uncaught TypeError: Cannot read property ‘innerText’ 在 updateCelkoveCeny (Eshop.js:86) 不能读取 undefined 的 ‘innerText’ 属性。

那86行是有 parseFloat(). 有什么建议吗?

function updateCelkoveCeny() {
var produktyKosikContainer = document.getElementsByClassName('kosik-produkty')[0]
var radkyKosik = produktyKosikContainer.getElementsByClassName('kosik-radek')
var celkovaCena = 0
for (var i = 0; i < radkyKosik.length; i++) {
    var radekKosik = radkyKosik[i]
    var cenaElement = radekKosik.getElementsByClassName('kosik-cena')[0]
    var pocetElement = radekKosik.getElementsByClassName('kosik-pocet-input')[0]
    var cena = parseFloat(cenaElement.innerText.replace(',-', ''))
    var pocet = pocetElement.value
    celkovaCena = celkovaCena + (cena * pocet)
}
document.getElementsByClassName('kosik-celkem-cena')[0].innerText = celkovaCena + ",-"
}

编辑:这是我添加的元素,如果用户想添加一个新的产品到购物车。

function pridejPoKliknutiDoKosiku(event) {
var button = event.target
var produkt = button.parentElement.parentElement
var nazevProduktu = produkt.getElementsByClassName('eshop-nazev-produktu')[0].innerText
var cena = produkt.getElementsByClassName('eshop-cena-produktu')[0].innerText
var zdrojObrazku = produkt.getElementsByClassName('eshop-fotka-produktu')[0].src
pridejProduktDoKosiku(nazevProduktu, cena, zdrojObrazku)
updateCelkoveCeny()
 }
 function pridejProduktDoKosiku(nazevProduktu, cena, zdrojObrazku) {
var radekKosik = document.createElement('div')
radekKosik.classList.add('kosik-radek')
var kosikProdukty = document.getElementsByClassName('kosik-produkty')[0]
var NazvyProduktu = kosikProdukty.getElementsByClassName('kosik-nazev-produktu')
for (var i = 0; i < NazvyProduktu.length; i++) {
    if (NazvyProduktu[i].innerText == nazevProduktu) {
        alert("Tento produkt je již obsažen v košíku.")
        return
    }
}
var radekKosikKontent = `
    <div class="kosik-radek">
        <div class="kosik-produktu kosik-sloupec">
            <img class="kosik-fotka-produktu" src="${zdrojObrazku}" width="100" height="100"><br>
            <span class="kosik-nazev-produktu">${nazevProduktu}</span>
        </div>
        <span class="kosik-cena kosik-sloupec">${cena}</span>
        <div class="kosik-pocet kosik-sloupec">
            <input class="kosik-pocet-input" type="number" value="1" min="1">
            <button class="button-remove" type="button">Odstranit</button>
        </div>
    </div><br><br>`
radekKosik.innerHTML = radekKosikKontent
kosikProdukty.append(radekKosik)
radekKosik.getElementsByClassName("button-remove")[0].addEventListener('click', odstranitProduktyVKosiku)
radekKosik.getElementsByClassName('kosik-pocet-input')[0].addEventListener('change', pocetZmenen)

}

解决方案:

在你的DOM中是否有一个元素包含 class 'kosik-cena'? 如果是这样,你可以在数组中循环得到innerText。很可能没有找到与 class 'kosik-cena'. 这样一来,就不可能得到 innerText 的元素不存在。如果能给你一些关于你的 HTML.

获取 innerText 的元素数组。

var cenaElement = document.getElementsByClassName("kosik-cena");

for (var i = 0; i < cenaElement.length; i++) {
  var text = cenaElement[i].innerText;
  console.log(text);
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

亚马逊SQS有什么服务水平协议(SLA)吗?例如,其正常运行时间

2022-9-9 2:56:18

未分类

用提供者改变颜色和图标

2022-9-9 2:56:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索