Javascript 给出一个onclick函数,该函数将对具有特定类的每个元素执行

Javascript 给出一个onclick函数,该函数将对具有特定类的每个元素执行,javascript,html,onclick,Javascript,Html,Onclick,我将如何制作这样的东西-我有多个元素与某个类,我希望这样做: 元素1-onclick激发函数13 元素2-onclick激发函数27 元素3-onclick激发函数81 我正在动态加载这些元素,因此无法手动将其放入js文件中。当我用php加载它们时,我也不能给它们一个onclick。 我正在寻找一个纯粹的js答案,所以请不要jQuery function setMyHandler(){ var elements = document.getElementsByClassName('some

我将如何制作这样的东西-我有多个元素与某个类,我希望这样做:

元素1-onclick激发函数13

元素2-onclick激发函数27

元素3-onclick激发函数81

我正在动态加载这些元素,因此无法手动将其放入js文件中。当我用php加载它们时,我也不能给它们一个onclick。 我正在寻找一个纯粹的js答案,所以请不要jQuery

function setMyHandler(){
   var elements = document.getElementsByClassName('someClass');
   for(var i = 0; i < elements.length; i++){
      elements[i].onclick = function(){};
   }
}
但我最好还是用你的活动代表。在根元素上设置处理程序。并检查event.target

方法1 在PHP代码中,使用onclick标记创建元素,并将预期输入函数

<div class="someclass" onclick="someFunction(1)"></div>
方法2 加载页面时,使用给定的类名遍历所有元素,并将侦听器附加到这些元素。要使这种方法起作用,div必须具有将在任意标记中包含的SomeFunction中输入的数字

<div data="13" > =) </div>

window.onload = function() {
  for (var i =0; i < document.getElementsByClassName("classname").; i++){
      var Div = document.getElementsByClassName("classname")[i];
      Div.addEventListener("click", function(){
        someFunction(Div.data);
   });
  }
}

可以通过将事件侦听器附加到父元素来委派事件。要获取目标元素,可以使用event.target

以下是您如何实现它的示例代码:

var parentElement = document.querySelector("#parent");
    parentElement.addEventListener("click", function () {
        var currentTarget = event.target;
        if (currentTarget.tagName === "LI") { // If you want LI to be clickable
            currentTarget.style.backgroundColor = "#eee";
            currentTarget.style.color = "#606060";
        }
    });

下面是相同的JSFIDLE:

最简单的方法是为元素提供一个数据属性,其中包含要运行的函数的参数:

<div class="someclass" data-parameter="12">
<div class="someclass" data-parameter="13">
<div class="someclass" data-parameter="14">

它们只是三个要素吗?如果不是,那么在elementN的某个函数中y的值应该是多少?请提供一个JSFIDLE或其他更好地理解您的问题的工具。阅读您的问题,您似乎可以使用事件委派来解决您的问题。@davidmatas该问题已全部回答完毕。谢谢,这是否适用于任意标记?这些标签会干扰其他代码吗?是的,这适用于任意命名的标签。不,它们不应该干扰任何其他代码!非常感谢我将您的答案和@jsm的答案结合起来:因为我不能发布另一个新问题,所以我必须在这里问您-例如,我如何获得父元素中单击元素的索引?比如,如果我点击第三个元素,它会返回数字3?我对现有的小提琴做了改进。签出链接:对于一般推荐方法,签出此小提琴:
function setMyHandler(){
   var elements = document.getElementsByClassName('someclass');
   for(var i = 0; i < elements.length; i++){
      elements[i].onclick = function(){ myFunction(this.data.parameter); };
   }
}