techers teaches teacher students sesion programa iniciar for español classdojo dojo

teaches - Problema de Dojo:.parent() no es una función



classdojo techers (3)

Parece que está utilizando dojo.byId como si devuelve un dojo.NodeList , pero no lo hace, simplemente devuelve un nodo DOM. Solo dojo.query devuelve regularmente objetos dojo.NodeList .

dojo.NodeList objetos dojo.NodeList tienen una función removeClass (que opera en todos los nodos de la lista), y si dojo.require("dojo.NodeList-traverse") , también tienen una función parent() que devuelve una nueva NodeList contiene el padres inmediatos de los nodos respectivos en la lista original.

http://dojotoolkit.org/reference-guide/dojo/NodeList-traverse.html

El fragmento de HTML:

<div class="hide_on_start"> <label>Type of Visit</label> <div id="record_visit_type"></div> </div> <div class="hide_on_start"> <label>Visit Date</label> <div id="record_visit_date"></div> </div> <div class="hide_on_start"> <label>Staff</label> <div id="record_staff"></div> </div>

El javascript que estoy usando:

>>> dojo.byId(''record_visit_type'') <div id="record_visit_type"> >>> dojo.byId(''record_visit_type'').parent().removeClass(''hide_on_start'') TypeError: dojo.byId("record_visit_type").parent is not a function

No entiendo cuál es el problema con dojo.byId(''record_visit_type'').parent().removeClass(''hide_on_start'') . ¿Alguien puede explicar?

Gracias


Hay un par de problemas que veo con tu código:

Creo que lo que estás buscando es la propiedad parentNode del domNode que estás recuperando. Este no es un método, sino una propiedad del DomNode que está buscando a través de dojo.byId .

Además, domNodes ellos mismos para no tener un método removeClass. Probablemente desee utilizar el dojo.removeClass(domNOde, cssClass) para hacer esto.

var recordVisitTypeDomNode = dojo.byId(''record_visit_type''); dojo.removeClass(recordVisitTypeDomNode.parentNode, ''hide_on_start'');


parentNode tiene razón, pero he aquí cómo lo haces en dojo:

// Go from the DOM node to a NodeList var myDomNode = dojo.byId(''record_visit_type''); var myNodeList = dojo.query(myDomNode); // Get the parent dojo.require("dojo.NodeList-traverse"); var parent = myNodeList.parent()[0];

Este método de invocación de dojo.query es válido:

// Non-selector Queries: // --------------------- // // If something other than a String is passed for the query, // `dojo.query` will return a new `dojo.NodeList` instance // constructed from that parameter alone and all further // processing will stop. This means that if you have a reference // to a node or NodeList, you can quickly construct a new NodeList // from the original by calling `dojo.query(node)` or // `dojo.query(list)`.

http://jsapi.info/dojo/1/dojo.query

Es como jquery $ (myDomNode) .parent ().