【发布时间】:2019-07-10 17:33:31
【问题描述】:
如果有人点击标题,我正在尝试扩展一些内容。首先,我不得不将点击的元素“突出显示”为一种“购物清单”。我通过应用一个类来做到这一点并且工作得很好。
在第二个位置,我应该单击一个 h3 元素,然后通过应用一个类来扩展一个名称几乎相同的 div 元素。我将在下面展示示例,但问题是由于某种原因一切都未定义。
我认为未定义关键变量的原因可能是因为代码在 HTML 加载之前执行,所以我将它包装在 window.onload 中,这确实在第一位但不是第二位。
第一名,工作中
<button class="btn-shop" id="almonds">Almonds</button>
<button class="btn-shop" id="apple">Apple</button>
<button class="btn-shop" id="argula">Argula</button>
window.onload = function(){
var ingredientsArray = document.querySelectorAll("#almonds,
#argula, #apple");
ingredientsArray.forEach(function(element){
element.addEventListener("click", function(){
element.classList.toggle("active-shop");
});
});
};
第二名,不工作
<h3 id="reps">Reps</h3>
<div class="reps-toggle noshow">
<p>aaaaaaaaaaa</p>
</div>
<h3 id="timeinterval">Time Interval</h3>
<div class="timeinterval-toggle noshow">
<p>aaaaaa</p>
</div>
window.onload = function(){
var trainingType = document.querySelectorAll("#reps, #timeinterval,
#tabata");
trainingType.forEach(function(element){
element.addEventListener("click", function(){
var elementAndToggle = element + "-toggle";
elementAndToggle.classList.toggle("noshow");
});
});
完整的错误信息:
未捕获的类型错误:无法读取 HTMLHeadingElement 处未定义的属性“切换”。 (script.js:6)
尝试了 console.logging 一些变量。
所有值都未定义,trainingType、element、elementAndToggle。我不明白为什么。
我不仅希望有解决方案,而且希望有人能向我解释问题出在哪里以及它是如何工作的,这样我就可以学习并且不再犯同样的错误。
【问题讨论】:
-
elementAndToggle是一个字符串。字符串没有classList属性。在该行设置断点。 -
好吧,这更有意义,不幸的是我不明白你在该行设置断点的意思。你介意帮我一下吗?感谢您的快速响应。
-
具体来说,
element + "-toggle"不会以有意义的方式工作。它产生一个类似"[object HTMLElement]-toggle"的字符串。 -
@randomSoul 没关系;
toggle将添加该类,即使不存在该类... -
@FilipHrnjez 谷歌浏览器的名称和“如何设置断点”。知道如何使用调试器是开发的一项基本技能。值得花时间学习。
标签: javascript