javascript - 如何检查 getElementsByClassName 位置?

标签 javascript arrays getelementsbyclassname

我有一个带有自定义标题和按钮的产品列表(li 元素)。此外,还有一个弹出表单,可以通过单击任何按钮来触发。

Click me! 按钮和标题一样多,但它们都会触发相同的弹出窗口。

我想要实现的是,弹出表单的表单输入元素的值是根据按钮的位置从特定标题中获取的。因此,如果我单击“第二个标题”按钮下的“点击我!”,则输入元素值将填充“第二个标题”。

这是我想出来的,但不知何故它行不通。我得到相同的值。有人可以帮我找出问题所在吗?

提前致谢!

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>

关于javascript - 如何检查 getElementsByClassName 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59585429/

相关文章:

javascript - 如何使用 document.getElementsByClassName 和 Element.classList 正确切换类

javascript - 基于 xAxis 元素点击显示额外数据 - Highcharts.js

vba - 使用 VBA excel 多个类名从网站提取数据

javascript - 在封装上揭示模块与对象文字模式

php - Cakephp2 FindBy语句中的sql错误,得到1064语法错误

c - 学习c编程——将数组传递给函数

c++ - 数组大小和复制性能

javascript - 如何从 javascript 中的相同多个 div 类名获取特定值?

javascript - React Native this2 .'function' 不是函数

javascript - d3.js 在 Jupyter Notebook 中加载版本 3 与版本 4