我正在尝试编写一个可以在任何站点上运行的脚本,所以我不想使用任何内联onchange方法。只要创建的inputCollection发生更改,脚本就会触发。

当我运行下面的代码片段时,我得到了所有输入字段及其值的即时迭代和输出。但是在“改变”上什么也没有发生。

有两个问题:
1.我希望它仅输出已更改的输入。
2.我希望它仅在“更改”事件上运行

对我在这里做错的任何见解吗?这是一个小提琴。 http://jsfiddle.net/owq4n2eg/

 (function () {
 var inputCollection = document.getElementsByTagName("input");
 for(var i=0;i<inputCollection.length;i++)
 {
     inputCollection[i].addEventListener("change",console.log("name:" + inputCollection[i].name + ",value:"+inputCollection[i].value),false);

 };
 })();


谢谢!

最佳答案

是的,tymeJV的答案有效,但我认为这并不理想。

(function(){
    var inputCollection = document.getElementsByTagName("input");
    for (var i = 0; i < inputCollection.length; i++) {
        inputCollection[i].addEventListener("change", handleFunction , false);
    }
})();

function handleFunction(event){
    console.log("name: " + event.srcElement.name + ', value: ' + event.srcElement.value);
}


jsfiddle

event.srcElement取值更加干净。应该仅将inputCollection用于分配侦听器,而不用于输出值。

10-06 08:57