Dojo.query foreach访问元素值

时间:2014-04-28 09:32:11

标签: ajax dojo spring-js

我是Dojo框架中的新手,所以我希望我的问题不是真的很蠢。

我的网页上有一个链接:

<a href="#" value="${index}" name="delete_name" id="delete_id${index}">Delete</a>

变量&#34; index&#34;定义明确,没有问题。

然后,我已经编写了这段代码来为我的链接上的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,我可以&#39;弄清楚原因。

我可能错过了一些重要的事情,你能帮帮我吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您应该知道element.value仅适用于由W3C定义的DOM的一部分。因此,如果你查看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

答案 1 :(得分:1)

dojo查询将始终返回domNode引用。无论如何,anchor元素是一个HTML元素。所以,这与Dojo无关,让我们看看JS部分有什么问题。

&#34;价值&#34; 不是锚元素的标准属性。因此,需要使用&#34; getAttribute&#34; 方法访问其他属性。 即在你的情况下,

element.getAttribute('value')