dojo/dom¶
| Project owner: | Eugene Lazutkin | 
|---|---|
| since: | V1.7 | 
This module defines the core Dojo DOM API.  The standard return variable for this module is dom.
The deprecated legacy features are set in dojo/_base/html.
Features¶
byId()¶
This is a simple alias to document.getElementById, which not only is shorter to write, but fortunately works in all
browsers. It turns a domNode reference to some Node byId, or the same node reference if passed a domNode.
Usage¶
The basic usage is very straight forward:
require(["dojo/dom"], function(dom){
    // fetch a node by id="someNode"
    var node = dom.byId("someNode");
});
The node variable is just a native domNode, with properties you can manipulate. The most common, ‘’innerHTML’‘:
// set some node to say "Hello World"
require(["dojo/dom"], function(dom){
    dom.byId("someNode").innerHTML = "Hello World";
});
If you pass byId a domNode reference, the same node is returned:
require(["dojo/dom"], function(dom){
    var node = dom.byId("someNode");
    var other = dom.byId(node);
    console.log(node == other);
});
// output
>>> true
If you pass byId() a string, and no domNode is found to match, undefined or the null object is returned
(depending on the browser), which is adequate truthiness to use conditionally:
require(["dojo/dom"], function(dom){
  var node = dom.byId("fooBar");
  if(node){
    node.innerHTML = "I was found!";
  }else{
    console.log("no node with id='fooBar' found!");
  }
});
Most (if not all) functions in Dojo accept either a string or DomNode as a parameter. If passed a string, the function
typically calls byId(), ensuring a domNode is always the object. For instance:
require(["dojo/dom", "dojo/dom-style"], function(dom, domStyle){
  domStyle.set(dom.byId("foo"), "opacity", 0.5);
  // is identical to:
  domStyle.set("foo", "opacity", 0.5);
});
The latter is preferred, as the call to byId() is made in both cases. The passing of a string ID is consistent
throughout the Dojo Toolkit.
JavaScript has a fun convention for conditionals inline. Imagine wanting a domNode reference, and if not present, default to some other node:
require(["dojo/dom"], functiom(dom)){
  var othernode = dom.byId("fallbackNode");
  var node = dom.byId("missingNode") || othernode;
  node.innerHTML = "Which one?";
}
Above, if the node id=”missingNode” is in fact missing, the logical OR will continue, and use othernode as the value of node.
Arguments¶
| Argument | Type | Description | 
|---|---|---|
| id | String | The id of the DOM node to be returned | 
Examples¶
The following example lets a node by id disappear from the screen.
This example uses some of the basic libraries of dojo/on and dojo/_base/fx in addition to dojo/dom.
require(["dojo/dom", "dojo/on", "dojo/_base/fx", "dojo/domReady!"],
function(dom, on, baseFx){
  var node = dom.byId("findMe");
  on(dom.byId("buttonOne"), "click", function(){
    baseFx.fadeOut({ node: node, duration: 300 }).play();
  });
  on(dom.byId("buttonTwo"), "click", function(){
    baseFx.fadeIn({ node: node, duration: 300 }).play();
  })
});
Some basic HTML to facilitate the example.
<button id="buttonOne">Hide Me!</button> <button id="buttonTwo">Show Me!</button>
<div id="findMe">Hiya!</div>
And some CSS styling so we can see what we are doing...
#findMe {
  width: 200px;
  height: 100px;
  background: #f3f3f3;
  border: 1px dotted #ccc;
  color: #444;
  padding: 10px;
  margin: 10px;
}
isDescendant()¶
Returns true if node is a descendant of ancestor.
Usage¶
require(["dojo/dom"], function(dom){
  dom.isDescendant("someNode", "someOtherNode");
});
Arguments¶
| Argument | Type | Description | 
|---|---|---|
| node | DomNode|String | The node you want to check is a descendant | 
| ancestor | DomNode|String | The node you think might be the ancestor | 
Examples¶
Code that checks if two nodes are descended from a third.
require(["dojo/dom", "dojo/domReady!"], function(dom){
  var output = "";
  if (dom.isDescendant("child", "ancestor")){
    output += "'child' is a descendant of 'ancestor'</br>";
  }else{
    output += "'child' is not a descendant of 'ancestor'</br>";
  }
  if (dom.isDescendant("loner", "ancestor")){
    output += "'loner' is a descendant of 'ancestor'</br>";
  }else{
    output += "'loner' is not a descendant of 'ancestor'</br>";
  }
  dom.byId("output").innerHTML = output;
});
Some basic HTML to facilitate the example.
<div id="ancestor">
  <div id="child">I'm a child!</div>
</div>
<div id="loner">I'm not a child!</div>
<div id="output"></div>
setSelectable()¶
Enable or disable selection on a node
Usage¶
require(["dojo/dom"], function(dom){
  dom.setSelectable("someNode", true);
});
Arguments¶
| Argument | Type | Description | 
|---|---|---|
| node | DomNode|String | The node you want to set selection on | 
| selectable | Boolean | True if selectable or false if not | 
Examples¶
An example of how to set a node to selectable or not.
Code using dojo/on to set the click handlers of two buttons to allow the ability to turn selectable on and off.
require(["dojo/dom", "dojo/on", "dojo/domReady!"], function(dom, on){
  on(dom.byId("button1"), "click", function(){
    dom.setSelectable("model", true);
  });
  on(dom.byId("button2"), "click", function(){
    dom.setSelectable("model", false);
  });
});
Some basic HTML to facilitate the example.
<div id="model">Am I selectable?</div>
<button id="button1">setSelectable True</button>
<button id="button2">setSelectable False</button>
See also¶
- dojo/dom-attr - DOM attribute API
- dojo/dom-class - Dojo DOM Class API
- dojo/dom-prop - DOM Property API
- dojo/dom-style - DOM Style API
- dojo/_base/html - Legacy API aliases