Dojo.query foreach доступ к значению элемента
Я новичок в среде Dojo, поэтому я надеюсь, что мой вопрос не слишком глуп.
У меня есть ссылка на моей веб-странице:
<a href="#" value="${index}" name="delete_name" id="delete_id${index}">Delete</a>
Переменная "index" хорошо определена, с этим проблем нет.
Затем я написал этот фрагмент кода, чтобы добавить действие к событию onclick в моей ссылке и функцию JS для вызова перед отправкой:
dojo.query("a[name=supprimerEnfant_name]").forEach(function(element) {
Spring.addDecoration(new Spring.AjaxEventDecoration({
formId: "form_id",
elementId: element.id,
event: "onclick",
beforeSubmit: function(){
jsFunctionToCall(element.value);
},
params: { _eventId: "deleteEvent", fragments:"frag"}
}))
});
В моем jsFunctionToCall
Я могу получить element.id
(проверено и все в порядке), но значение элемента null
и я не могу понять, почему.
Я, наверное, упускаю что-то важное, не могли бы вы помочь мне с этим?
Заранее спасибо.
2 ответа
Вы должны знать, что element.value
работает только с элементами, которые являются частью DOM, определенной W3C. Итак, если вы посмотрите на HTMLInputElement
интерфейс (используется элементами формы), вы увидите, что он явно имеет свойство value
, ссылаясь на значение элемента.
Однако это не относится к HTMLAnchorElement. Это означает правильный способ получения значения value
атрибут, путем выбора самого атрибута, используя getAttribute()
с помощью модуля Dojo / dom-attr Dojo.
Например:
require(["dojo/query", "dojo/dom-attr", "dojo/domReady!"], function(query, domAttr) {
query("a").forEach(function(element) {
console.log(element.id);
console.log(domAttr.get(element, "value")); // This will work
});
});
Демонстрация: JSFiddle
Запрос dojo всегда будет возвращать ссылки на domNode. В любом случае, якорный элемент является HTML-элементом. Итак, это не имеет ничего общего с Dojo и позволяет увидеть, что не так с частью JS.
Значение не является стандартным атрибутом элемента привязки. Таким образом, дополнительные атрибуты должны быть доступны с помощью метода "getAttribute". то есть в вашем случае,
element.getAttribute('value')