我在尝试跟进 Udemy JS 项目时遇到了以下错误。我的 3 个全职开发 friend 无法解决这个问题,我已经阅读了 10 - 15 篇关于这个错误及其变体的 StackOverflow 文章,但似乎没有任何应用。
这是常见的错误:
Uncaught TypeError: Cannot set property 'textContent' of null
at Object.displayBudget (app.js:177)
at updateBudget (app.js:219)
at ctrlAddItem (app.js:236)
at HTMLDocument.<anonymous> (app.js:205)
这看起来很简单,但是将脚本放在 HTML 底部的结束 body 标记之前的常见解决方案并不适用于查询名称的匹配元素。我已经对这两件事进行了三重检查,甚至根据某人的建议添加了 JQuery .ready 函数以确保页面正在加载。
我已经在控制台中为上面引用的所有行设置断点并单步执行代码,并且在失败之前我的变量看起来像是已定义并且不是 NULL。请参阅所附图片或下方图片。
'budget__value' 完全存在于 html 中。
<body>
<div class="top">
<div class="budget">
<div class="budget__title">
Available Budget in <span class="budget__title--month">%Month%</span>:
</div>
<div class="budget__value">+ 2,345.64</div>
这是一个Fiddle我的代码。如果您想看看我在这里介绍了什么,我也已将它推送到 Github (/Laflamme02/BudgetApp)。
我已经为此苦苦挣扎了至少 2 周,所以帮助我解决这个问题的人将是我最喜欢的人。
最佳答案
您忘记了 DOMString.budgetLabel
中类名前面的点。它应该是:
document.querySelector('.budget__value').textContent = obj.budget
从您的 JSFiddle 中,您可以看到您也忘记将点放在其他几个字符串的前面:incomeLabel
、expensesLabel
和 percentageLabel
。所有四个都是简单的修复。
var DOMstrings = {
inputType: '.add__type',
inputDescription: '.add__description',
inputValue: '.add__value',
inputBtn: '.add__btn',
incomeContainer: '.income__list',
expensesContainer: '.expenses__list',
budgetLabel: 'budget__value',
incomeLabel: 'budget__income--value',
expensesLabel: 'budget__expenses--value',
percentageLabel: 'budget__expenses--percentage'
};
关于javascript - 未捕获的类型错误 : Cannot set property 'textContent' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603033/