首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对不同ID的不同元素调用相同的方法?

如何对不同ID的不同元素调用相同的方法?
EN

Stack Overflow用户
提问于 2018-05-06 22:37:41
回答 5查看 569关注 0票数 1

假设我有3个p元素。如果我点击它们中的一个,它的文本应该会改变。但是,如果不为每个元素都编写一个方法,我怎么做呢?

代码语言:javascript
运行
复制
    <!DOCTYPE html>
<html>
<body>

<p>This example uses the HTML DOM to assign an "onclick" event to a p element.</p>

<p id="demo">Click me.</p>
<p id="demo2">Click me.</p>

<script>
document.getElementById("demo").onclick = function() {myFunction()};

function myFunction() {
    document.getElementById("demo").innerHTML = "YOU CLICKED ME!";
}
</script>

</body>
</html>

在这个例子中,如果我点击第一个,它就可以工作了。但对于第二个不是这样。我不想一遍又一遍地编写相同的方法,只更改Ids。一定有一种更简单的方法。有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2018-05-06 22:45:26

如果您需要在多个元素上使用相同的侦听器,我建议您使用class而不是ids

代码语言:javascript
运行
复制
var p = document.querySelectorAll(".selector");
p.forEach(function(el) {
  el.addEventListener('click', myEventHandler);
})

function myEventHandler(event) {
    event.target.innerHTML = "YOU CLICKED ME!";
}
代码语言:javascript
运行
复制
<p>This example uses the HTML DOM to assign an "onclick" event to a p element.</p>

<p class="selector">Click me.</p>
<p class="selector">Click me.</p>

票数 1
EN

Stack Overflow用户

发布于 2018-05-06 22:41:31

首先,元素不应该具有相同的id。

其次,让您的函数接受事件的参数。这会让你得到你点击的东西。

第三,您只想设置一些文本,因此对于textContent,请去掉innerHTML

代码语言:javascript
运行
复制
<p id="demo">Click me.</p>
<p id="demo2">Click me.</p>

<script>
    document.getElementById("demo").onclick = myFunction;
    document.getElementById("demo2").onclick = myFunction;

    function myFunction(e) {
        e.target.textContent = "YOU CLICKED ME!";
    }
</script>

票数 0
EN

Stack Overflow用户

发布于 2018-05-06 22:41:57

多个元素不应具有相同的id属性。但是您可以对多个元素使用相同的class

您可以使用querySelectorAll()获取所有目标p。然后,您可以使用forEach()addEventListener()click事件添加到每个p。在函数内部,您可以使用关键字this访问当前单击的元素,如下所示:

代码语言:javascript
运行
复制
var p = document.querySelectorAll(".demo");
p.forEach(function(el){
  el.addEventListener('click', myFunction);
})

function myFunction() {
    this.innerHTML = "YOU CLICKED ME!";
}
代码语言:javascript
运行
复制
<p>This example uses the HTML DOM to assign an "onclick" event to a p element.</p>

<p id="demo1" class="demo">Click me.</p>
<p id="demo2" class="demo">Click me.</p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50200874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档