javascript - 如何检查 getElementsByClassName 的位置?
问题描述
我有一个li
带有自定义标题和按钮的产品列表(元素)。此外,还有一个弹出表单,通过单击任何按钮触发。
有多少 点我!按钮,许多标题,但它们都会触发相同的弹出窗口。
我想要实现的是弹出表单的表单输入元素的值是根据按钮的位置从特定的标题中获取的。所以,如果我点击点击我!在第二个标题按钮下,输入元素的值将用第二个标题填充。
这是我想出来的,但不知何故它不起作用。我得到相同的值。有人可以帮我找到问题吗?
提前致谢!
var title = document.getElementsByClassName('title');
var titleText;
var i;
for (i = 0; i < title.length; i++) {
titleText = title[i].innerText;
console.log("Name: " + titleText + ", position: " + i);
}
document.getElementById('inserthere').value = titleText;
<ul class="products-list">
<li class="product">
<h2 class="title">First title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Second title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Third title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Fourth title</h2>
<a class="button" href="#">Click me!</a>
</li>
</ul>
<div class="popup">
<input type="text" id="inserthere" value="">
</div>
解决方案
您可以通过获取单击的元素来检索文本,检索兄弟(通过父元素),拾取其文本,然后显示:
// We use event delegation, by picking up the bubbled-up click event
// in the container element. This way we only to bind only one click handler
document.querySelector(".products-list").addEventListener("click", function (e) {
if (e.target.classList.contains("button")) { // The click was on a button class
// Go to the button's parent and find the title underneath it:
document.getElementById("inserthere").value =
e.target.parentNode.querySelector(".title").textContent;
}
});
<ul class="products-list">
<li class="product">
<h2 class="title">First title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Second title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Third title</h2>
<a class="button" href="#">Click me!</a>
</li>
<li class="product">
<h2 class="title">Fourth title</h2>
<a class="button" href="#">Click me!</a>
</li>
</ul>
<div class="popup">
<input type="text" id="inserthere" value="">
</div>
推荐阅读
- java - 如何在不同项目中使用 Gradle 中的父级?
- telnet - How to connect with sshd?
- angular - 为每个文件夹自定义 TypeScript 编译器选项
- rest - 带有不记名令牌的 SharePoint 搜索 REST API 返回错误的项目数
- npm - 如何为公司的 Zscaler 设置配置 npm 代理?
- android - Web 浏览器应用程序 - 如何拦截 URL 意图?
- c# - 转换为 double 正在改变我的号码 C# 14.80 - > 1480
- react-native - 如何从平面列表中获取值
- python - 如何将所有答案附加到 1 个数组
- visual-studio - 在 VS 2019 中排除文件夹在文件中查找