我正在尝试编写一个可以在任何站点上运行的脚本,所以我不想使用任何内联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
用于分配侦听器,而不用于输出值。