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')
Другие вопросы по тегам