多个元素上的JavaScript onChange()

多个元素上的JavaScript onChange(),javascript,onchange,Javascript,Onchange,是否可以将相同的onChange()分配给多个元素(无jQuery) 现在我正在做什么 var namefirst = document.getElementsByName("attribute.Identifier Source")[0]; namefirst.onchange = function () {//disable some stuff } 但是,我必须对另外5个元素执行onChange(),因此我想知道是否可以同时对所有元素执行此操作?或者我必须对每个元素都这样做 (我对Jav

是否可以将相同的onChange()分配给多个元素(无jQuery)

现在我正在做什么

var namefirst = document.getElementsByName("attribute.Identifier Source")[0];
namefirst.onchange = function () {//disable some stuff }
但是,我必须对另外5个元素执行onChange(),因此我想知道是否可以同时对所有元素执行此操作?或者我必须对每个元素都这样做


(我对Javascript非常陌生)

一种方法是使用如下循环:

for(i=0; i<var.length; i++){
    //do stuff
}
for(i=0;i关于:

var names = document.getElementsByName("attribute.Identifier Source");
for (var i = 0; i < names.length; i++) {
    names[i].onchange = function() {
        //do stuff
    }
}
var name=document.getElementsByName(“attribute.Identifier-Source”);
对于(var i=0;i
如果要立即绑定它,请尝试使用事件委派。即,为输入创建一个包装,并将更改事件绑定到它,然后根据事件目标检测元素并执行操作

大概是这样的:

for(i=0; i<var.length; i++){
    //do stuff
}
HTML:

因此,这里输入上的更改事件冒泡到其父级,在那里您捕获它并执行您的操作


显然,您可以在元素上循环,并在循环中分配处理程序:

function onChangeHandler() {
  // do some stuff
}

var myCollection = document.getElementsByName("attribute.Identifier Source");
for (var i=0, l=myCollection.length; i<l; i++)
  myCollection[i] = onChangeHandler;
函数onChangeHandler(){
//做点什么
}
var myCollection=document.getElementsByName(“attribute.Identifier源”);

对于(var i=0,l=myCollection.length;i有一种按顺序执行此操作的替代方法。您可以使用伪类标记html代码,并执行以下操作:

var elems=document.querySelectorAll(".mark");
for(var i=0;i<elems.length;i++){
    elems[i].addEventListener("change", myFunction);
}
var elems=document.queryselectoral(“.mark”);
对于(var i=0;i
function onChangeHandler() {
  // do some stuff
}

var myCollection = document.getElementsByName("attribute.Identifier Source");
for (var i=0, l=myCollection.length; i<l; i++)
  myCollection[i] = onChangeHandler;
function onChangeHandler(event) {
  // some browser abstraction
  if (!event) event = window.event;
  var changedElement = event.srcElement || this;
  // do some stuff
}

var myCollection = document.getElementsByName("attribute.Identifier Source");
for (var i=0, l=myCollection.length; i<l; i++) {
  myCollection[i].addEventListener('change', onChangeHandler, false);
  /* if you want to support older MSIE, you would do some like
  var el = myCollection[i];
  if (el.addEventListener) {
    el.addEventListener('change', onChangeHandler, false);
  }
  else if (el.attachEvent) {
    el.attachEvent('onchange', onChangeHandler);
  }
  */
}
var elems=document.querySelectorAll(".mark");
for(var i=0;i<elems.length;i++){
    elems[i].addEventListener("change", myFunction);
}