关于多个元素的JavaScript onChange()

bha*_*icp 6 javascript onchange

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

目前我正在做

var namefirst = document.getElementsByName("attribute.Identifier Source")[0];
namefirst.onchange = function () {//disable some stuff }
Run Code Online (Sandbox Code Playgroud)

但是,我必须在onChange()中为另外5个元素执行此操作,因此我想知道是否可以立即为所有这些元素执行此操作?或者我将不得不为每个元素执行此操作.

(我对Javascript很新)

PSL*_*PSL 10

如果要立即绑定它,请尝试使用事件委派.即为输入创建包装器并将change事件绑定到它,并根据事件目标检测元素并执行操作.

像这样的东西:

HTML:

<div id="wrapper">
    <input type="text" name="myText" />
    <input type="text" name="myText" />
    <input type="text" name="myText" />
    <input type="text" name="myText" />
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

document.getElementById('wrapper').addEventListener('change', function(event){
    var elem = event.target;
    console.log(elem.name);
    console.log(elem.tagName);
    console.log(elem.type);
    if(elem.name === "myText"){
         console.log(elem.value);
    }   
});
Run Code Online (Sandbox Code Playgroud)

所以这里输入的更改事件会向其父级冒泡,并且您可以捕获它并执行操作.

小提琴


aet*_*aet 6

关于什么:

var names = document.getElementsByName("attribute.Identifier Source");
for (var i = 0; i < names.length; i++) {
    names[i].onchange = function() {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)