Я получу право на описание и пример кода, поскольку, как я полагаю, многие из вас так же путаются в названии, как и я (старались изо всех сил).Итерации над HTMLcollection для динамического определения значений в функции конструктора?
Ситуация: У меня есть форма, которая отправляет входные данные в новый экземпляр объекта, используя функцию-конструктор.
ТОК КОД:
// Selectors
var submit = document.getElementById('submit-btn');
var formValues = document.getElementsByClassName('input');
// ** Task Object
function Task(arrayOfValues) {
this.title = arrayOfValues[0].value;
this.deadline = arrayOfValues[1].value;
this.status = arrayOfValues[2].value;
}
submit.addEventListener('click', function(e) {
e.preventDefault();
var newTask = new Task(formValues);
}, false);
Проблема: Передача массива в качестве аргумента и назначение каждого индекса вручную чувствует себя невероятно хрупким мне. Если бы я должен был расширить сбор данных формы, мне пришлось бы вручную назначать каждое новое значение как отдельную переменную. Каков синтаксис или шаблон, если вы хотите перебирать массив и динамически присваивать значения переменным в функции конструктора? Заранее спасибо. Любая помощь очень ценится.
Пример желаемого КОД
var formValues = document.getElementsByClassName('input');
// ** Task Object
function Task(arrayOfValues) {
this.values = arrayOfValues;
for (var i=0;i<this.values.length;i++) {
var key = this.values[i].getAttribute('name');
// This should be used with "this" to reference key ie. "this.title, this.deadline, this.status ect...
var value = this.values[i].value;
// This will be the value associated with each key reference ie. "this"
return this[key] = value;
// is this even possible ?
}
}
submit.addEventListener('click', function(e) {
e.preventDefault();
var newTask = new Task(formValues);
}, false);
Извините, но ваш пример плотно соединяет задачу с DOM, я думаю, что я предложил лучше разделить проблемы. –