2014-04-28 2 views
1

저는 Dojo 프레임 워크의 초보자입니다. 그래서 제 질문은 정말로 바보가 아니길 바랍니다.Dojo.query foreach 액세스 요소 값

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

변수 "인덱스"잘 정의되고, 그와 아무 문제 :

나는 내 웹 페이지에서 링크를 가지고있다.

그럼, 내가 제출하기 전에 전화를 내 링크와 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는 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

+0

덕분에, 그것이 마치 마법처럼 작동합니다. – maxetx

1

dojo 쿼리는 항상 domNode 참조를 리턴합니다. 아무튼 앵커 요소는 HTML 요소입니다. 따라서 Dojo와 아무 관련이 없으며 JS 부분에 무엇이 잘못되었는지 보도록합니다.

"값"은 앵커 요소의 표준 속성이 아니며 입니다. 따라서 추가 속성은 "getAttribute" 메소드를 사용하여 액세스해야합니다. 귀하의 경우 즉,

element.getAttribute('value')