I'm having trouble with translating jQuery to Vanilla JS, here is my code in jQuery:
$("[target]").change(function () {
var attr = $(this).attr("target");
this.obj[attr] = this.value
});
And I decided to translate it to Vanilla JS, to get bettor performances (I also improved it a bit), and I came with that:
var addEventListener = (function() {
if(document.addEventListener) {
return function(element, event, handler) {
element.addEventListener(event, handler, false);
};
}
else {
return function(element, event, handler) {
element.attachEvent('on' + event, handler);
};
}
}());
var elements = document.querySelectorAll("[target]");
var obj = this.obj;
for (var i = 0; i < elements.length; i++) {
var attr = elements[i].getAttribute("target");
addEventListener(elements[i], "change", function () {
obj[attr] = this.value;
});
addEventListener(elements[i], "keydown", function () {
obj[attr] = this.value;
});
addEventListener(elements[i], "input", function () {
obj[attr] = this.value;
});
addEventListener(elements[i], "paste", function () {
obj[attr] = this.value;
});
}
The problem is that it works, but for only 1 element, if there is 2 or more element with the attribute "target", then, it just doesn't work properly. Any idea to fix this?