Html 选择器 returns 一个 html 集合,我不知道如何找到我需要更改的元素
Html selector returns an html collection and I don't know how to get to the element I need to make changes on
我有 2 个 div:1 个在页面的左半部分 (A),一个在右侧 (B)。当悬停在右侧部分的某个元素上时,我希望在左侧部分显示一些内容。
我使用以下方法完成此操作:
<div className="A">
<div className="hidden-div1">DIV 1</div>
<div className="hidden-div2">DIV 2</div>
<div className="hidden-div3">DIV 3</div>
</div>
<div className="B">
<div className="base-div1">
<h2 onMouseOver={this.mouseOver} onMouseOut={this.mouseOut}>Project 1</h2>
</div>
</div>
mouseOver(e){
const hiddenDiv1 = document.querySelector(".hidden-div1");
hiddenDiv1.style.display = "block";
}
mouseOut(e){
const hiddenDiv1 = document.querySelector(".hidden-div1");
hiddenDiv1.style.display = "none";
}
问题是,考虑到我有 3 个不同的 hidden-div 和 3 个不同的 base-div,我想为它们制作 2 个通用的 mouseOver 和 mouseOut 函数。我试过的方法是这样的:
mouseOver(e){
let hiddenDivName = "hidden-div" + e.target.className.slice(-1);
let hiddenDivSelector = document.getElementsByClassName(hiddenDivName);
hiddenDivSelector.style.display = "block";
}
但它 returns“无法设置未定义的 属性 'display'”。
我尝试了控制台日志记录 hiddenDivSelector,它显示了一个 HTML 集合,但我不知道如何获取我的元素。我已经尝试阅读它并访问其他问题,但我无法对我的情况应用任何东西
事件目标 returns 对 DOM 元素的引用。在 DOM 元素上,我们可以使用 getAttribute 方法并将所有非数字字符替换为 '';结果可用于搜索 DOM 并遍历返回的数组;
mouseOver(e){
let hiddenDivName = "hidden-div" + e.target.getAttribute('class').replace(/\D/g, '');
let hiddenDivSelector = document.getElementsByClassName(hiddenDivName);
Array.from( hiddenDivSelector ).forEach(el => el.style.display ) = "block";
}
我有 2 个 div:1 个在页面的左半部分 (A),一个在右侧 (B)。当悬停在右侧部分的某个元素上时,我希望在左侧部分显示一些内容。
我使用以下方法完成此操作:
<div className="A">
<div className="hidden-div1">DIV 1</div>
<div className="hidden-div2">DIV 2</div>
<div className="hidden-div3">DIV 3</div>
</div>
<div className="B">
<div className="base-div1">
<h2 onMouseOver={this.mouseOver} onMouseOut={this.mouseOut}>Project 1</h2>
</div>
</div>
mouseOver(e){
const hiddenDiv1 = document.querySelector(".hidden-div1");
hiddenDiv1.style.display = "block";
}
mouseOut(e){
const hiddenDiv1 = document.querySelector(".hidden-div1");
hiddenDiv1.style.display = "none";
}
问题是,考虑到我有 3 个不同的 hidden-div 和 3 个不同的 base-div,我想为它们制作 2 个通用的 mouseOver 和 mouseOut 函数。我试过的方法是这样的:
mouseOver(e){
let hiddenDivName = "hidden-div" + e.target.className.slice(-1);
let hiddenDivSelector = document.getElementsByClassName(hiddenDivName);
hiddenDivSelector.style.display = "block";
}
但它 returns“无法设置未定义的 属性 'display'”。 我尝试了控制台日志记录 hiddenDivSelector,它显示了一个 HTML 集合,但我不知道如何获取我的元素。我已经尝试阅读它并访问其他问题,但我无法对我的情况应用任何东西
事件目标 returns 对 DOM 元素的引用。在 DOM 元素上,我们可以使用 getAttribute 方法并将所有非数字字符替换为 '';结果可用于搜索 DOM 并遍历返回的数组;
mouseOver(e){
let hiddenDivName = "hidden-div" + e.target.getAttribute('class').replace(/\D/g, '');
let hiddenDivSelector = document.getElementsByClassName(hiddenDivName);
Array.from( hiddenDivSelector ).forEach(el => el.style.display ) = "block";
}