通过 JS 添加 HTML 到特定的 child-Element
Adding HTML via JS to a specific child-Element
我有一个非常特殊的情况,我有 ~50 child-divs 我不能直接影响,也就是说,我不能添加 类 或 ids 到一个特定的 child-div 也不能改变div 通过 HTML 因为它们是自动创建的。
它们出现在一个简单的 grid/flexbox 中,两个方框并排。我已经用 nth-child 更改了其中一些,但现在我想在 f.ex 之间添加 dividual 标题。 div 30 和 31。
直到现在,当我想要一些字段更大时,我直接通过 nth-child 解决了其中一个 child-divs。
基本结构如下:
<div class="parent">
{$content} // basically <div>{$single-box-content}</div>
</div>
而我目前使用的CSS:
.parent {
width: 800px;
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.parent:nth-child(10) {
width:800px;
}
效果很好。但是,既然我想要 above 之一的 div 标题(不在里面),它就不起作用了。当我尝试这个时:
.parent:nth-child(31):before {
content: "Headline";
display: block;
}
它出现在 child-div 里面,而不是在它上面。我无法将 div 添加到 HTML 部分,因为它们都是在后端自动创建的(这是一种形式)。
我想知道是否可以将 JavaScript 与一些 element.innerHTML 一起使用,但我正处于学习 JS 的最开始,我找不到任何(我可以适应)解决JS 中的特定 child-Elements。
我的问题有前端解决方案吗?
使用 JS,您可以添加 classes、ID,将 HTML-elements 附加到 DOM 等等。
下面向您展示了如何插入 h2
,以及如何将 class 添加到您选择的元素 - 我使用 :nth-child(3)
进行说明,但是你可以用 :nth-child(31)
交换它。该代码在代码段的注释中进行了解释。
// finding the child element with nth-child selector
let selected = document.querySelector('.parent:nth-child(3)');
// giving it a class name
selected.classList.add('parentClass');
// creating a h2 element
let header = document.createElement("h2");
// the text inside the h2 element
let headerText = document.createTextNode("headline");
// appending the text to the h2 element
header.append(headerText);
// giving the child a class name
header.classList.add('childClass');
// appending the headline above/before the selected element
selected.parentNode.insertBefore(header, selected);
/* the class applied with JS */
.parentClass {
background-color: red;
}
.childClass {
background-color: limegreen;
}
<div class="parent">parent 1</div>
<div class="parent">parent 2</div>
<div class="parent">parent 3</div>
我有一个非常特殊的情况,我有 ~50 child-divs 我不能直接影响,也就是说,我不能添加 类 或 ids 到一个特定的 child-div 也不能改变div 通过 HTML 因为它们是自动创建的。 它们出现在一个简单的 grid/flexbox 中,两个方框并排。我已经用 nth-child 更改了其中一些,但现在我想在 f.ex 之间添加 dividual 标题。 div 30 和 31。
直到现在,当我想要一些字段更大时,我直接通过 nth-child 解决了其中一个 child-divs。
基本结构如下:
<div class="parent">
{$content} // basically <div>{$single-box-content}</div>
</div>
而我目前使用的CSS:
.parent {
width: 800px;
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.parent:nth-child(10) {
width:800px;
}
效果很好。但是,既然我想要 above 之一的 div 标题(不在里面),它就不起作用了。当我尝试这个时:
.parent:nth-child(31):before {
content: "Headline";
display: block;
}
它出现在 child-div 里面,而不是在它上面。我无法将 div 添加到 HTML 部分,因为它们都是在后端自动创建的(这是一种形式)。
我想知道是否可以将 JavaScript 与一些 element.innerHTML 一起使用,但我正处于学习 JS 的最开始,我找不到任何(我可以适应)解决JS 中的特定 child-Elements。 我的问题有前端解决方案吗?
使用 JS,您可以添加 classes、ID,将 HTML-elements 附加到 DOM 等等。
下面向您展示了如何插入 h2
,以及如何将 class 添加到您选择的元素 - 我使用 :nth-child(3)
进行说明,但是你可以用 :nth-child(31)
交换它。该代码在代码段的注释中进行了解释。
// finding the child element with nth-child selector
let selected = document.querySelector('.parent:nth-child(3)');
// giving it a class name
selected.classList.add('parentClass');
// creating a h2 element
let header = document.createElement("h2");
// the text inside the h2 element
let headerText = document.createTextNode("headline");
// appending the text to the h2 element
header.append(headerText);
// giving the child a class name
header.classList.add('childClass');
// appending the headline above/before the selected element
selected.parentNode.insertBefore(header, selected);
/* the class applied with JS */
.parentClass {
background-color: red;
}
.childClass {
background-color: limegreen;
}
<div class="parent">parent 1</div>
<div class="parent">parent 2</div>
<div class="parent">parent 3</div>