1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
4 we use a strict-mode DTD to ensure that the box model is the same for these
9 <style type="text/css">
10 @import "../../resources/dojo.css";
18 background-color: black;
32 <title>testing dojo.NodeList</title>
33 <script type="text/javascript" src="../../dojo.js"
34 djConfig="isDebug: true, noFirebugLite: true"></script>
35 <script type="text/javascript">
36 dojo.require("doh.runner");
37 dojo.addOnLoad(function(){
38 var c = dojo.byId("c1");
39 var t = dojo.byId("t");
40 var s = dojo.byId("sq100");
41 var fourElementNL = new dojo.NodeList(c, t, c, t);
46 var nl = new dojo.NodeList();
51 var nl = new dojo.NodeList(4);
56 var nl = new dojo.NodeList(c, t);
61 // iteration and array tests
64 var nl = new dojo.NodeList(c, t);
65 nl.forEach(function(i){ lastItem = i; });
68 var r = nl.forEach(function(i, idx, arr){
69 doh.t(arr.constructor == dojo.NodeList);
70 doh.is(2, arr.length);
72 doh.t(r.constructor == dojo.NodeList);
77 doh.is(0, fourElementNL.indexOf(c));
78 doh.is(1, fourElementNL.indexOf(t));
79 doh.is(-1, fourElementNL.indexOf(null));
82 function lastIndexOf(){
83 doh.is(2, fourElementNL.lastIndexOf(c));
84 doh.is(3, fourElementNL.lastIndexOf(t));
85 doh.is(-1, fourElementNL.lastIndexOf(null));
90 var ret = fourElementNL.every(function(){
98 var ret = fourElementNL.every(function(){
107 var ret = fourElementNL.some(function(){
112 var ret = fourElementNL.some(function(i){
113 return (i.id == "t");
119 var ret = fourElementNL.map(function(){
123 doh.is(ret, [true, true, true, true]);
125 var ret = fourElementNL.map(function(){
128 // doh.is(ret, [0, 1, 2, 3]);
130 doh.t(ret.constructor == dojo.NodeList);
132 // make sure that map() returns a NodeList
134 fourElementNL.map(function(){ return 2; }).forEach( function(x){ sum += x; } );
139 var pnl = new dojo.NodeList(t, t, c);
140 doh.is(2, pnl.slice(1).length);
141 doh.is(3, pnl.length);
142 doh.is(c, pnl.slice(-1)[0]);
143 doh.is(2, pnl.slice(-2).length);
147 var pnl = new dojo.NodeList(t, t, c);
148 console.debug(pnl.splice(1));
150 doh.is(2, pnl.splice(1).length);
151 doh.is(1, pnl.length);
152 pnl = new dojo.NodeList(t, t, c);
153 doh.is(c, pnl.splice(-1)[0]);
154 doh.is(2, pnl.length);
155 pnl = new dojo.NodeList(t, t, c);
156 doh.is(2, pnl.splice(-2).length);
160 function spliceInsert(){
162 var pnl = new dojo.NodeList(t, t, c);
164 doh.is(4, pnl.length);
168 pnl = new dojo.NodeList(t, t, c);
169 pnl.splice(0, 0, c, s);
170 doh.is(5, pnl.length);
175 // insert multiple at offset
176 pnl = new dojo.NodeList(t, t, c);
177 pnl.splice(1, 0, c, s);
178 doh.is(5, pnl.length);
185 function spliceDel(){
187 var pnl = new dojo.NodeList(c, t, s);
189 doh.is(2, pnl.length);
193 pnl = new dojo.NodeList(c, t, s);
195 doh.is(1, pnl.length);
199 pnl = new dojo.NodeList(c, t, s);
201 doh.is(2, pnl.length);
207 function spliceInsertDel(){
209 var pnl = new dojo.NodeList(c, t, s);
211 doh.is(3, pnl.length);
212 doh.is(dojo.NodeList(c, s, s), pnl);
214 pnl = new dojo.NodeList(c, t, s);
216 doh.is(2, pnl.length);
217 doh.is(dojo.NodeList(c, s), pnl);
222 var pnl = new dojo.NodeList(t);
223 doh.is(c, pnl.query("span")[0]);
224 doh.is(t, dojo.query("body").query(":last-child")[0]);
225 doh.is(c, dojo.query("body").query(":last-child")[1]);
226 doh.is(1, pnl.query().length);
230 doh.is(dojo.query("body :first-child").filter(":last-child")[0], c);
231 doh.is(1, dojo.query("*").filter(function(n){ return (n.nodeName.toLowerCase() == "span"); }).length);
234 filterFunc: function(n){
235 return (n.nodeName.toLowerCase() == "span");
238 doh.is(1, dojo.query("*").filter(filterObj.filterFunc).length);
239 doh.is(1, dojo.query("*").filter(filterObj.filterFunc, filterObj).length);
242 // layout DOM functions
244 var tnl = new dojo.NodeList(dojo.byId('sq100'))
245 doh.t(dojo.isArray(tnl));
246 doh.is(100, tnl.coords()[0].w);
247 doh.is(100, tnl.coords()[0].h);
248 doh.is(document.body.getElementsByTagName("*").length, dojo.query("body *").coords().length);
253 var tnl = new dojo.NodeList(s);
254 doh.is(1, tnl.style("opacity")[0]);
256 dojo.style(t, "opacity", 0.5);
257 doh.is(0.5, tnl.style("opacity").slice(-1)[0]);
258 tnl.style("opacity", 1);
263 var tnl = new dojo.NodeList(s, t);
264 tnl.style("opacity", 0.5);
265 doh.is(0.5, dojo.style(tnl[0], "opacity"));
266 doh.is(0.5, dojo.style(tnl[1], "opacity"));
268 tnl.style("opacity", 1);
272 var tnl = new dojo.NodeList(s, t);
273 tnl.style("opacity", 1);
274 doh.is(1, tnl.style("opacity")[0]);
275 dojo.style(t, "opacity", 0.5);
276 doh.is(1.0, tnl.style("opacity")[0]);
277 doh.is(0.5, tnl.style("opacity")[1]);
279 tnl.style("opacity", 1);
283 var spans = dojo.query("span");
284 var divs = dojo.query("div");
285 console.debug(spans.concat(divs));
286 doh.is(spans.concat(divs).constructor, dojo.NodeList);
287 doh.is((divs.length + spans.length), spans.concat(divs).length);
291 var spans = dojo.query("span");
292 var divs = dojo.query("div");
293 doh.is(spans.concat([]).constructor, dojo.NodeList);
297 var ih = "<div><span></span></div><span class='thud'><b>blah</b></span>";
299 var tn = document.createElement("div");
301 dojo.body().appendChild(tn);
302 var nl = dojo.query("b", tn).place(tn, "first");
303 doh.t(nl.constructor == dojo.NodeList);
304 doh.is(1, nl.length);
305 doh.is("b", nl[0].nodeName.toLowerCase());
306 doh.is(tn, nl[0].parentNode);
307 doh.is(tn.firstChild, nl[0]);
311 var ih = "<div><span></span></div><span class='thud'><b>blah</b></span>";
313 var tn = document.createElement("div");
315 dojo.body().appendChild(tn);
316 var nl = dojo.query("span", tn).orphan();
317 doh.t(nl.constructor == dojo.NodeList);
319 doh.is(2, nl.length);
320 doh.is(1, tn.getElementsByTagName("*").length);
323 var nl = dojo.query("*", tn).orphan("b");
324 doh.is(1, nl.length);
325 doh.is("blah", nl[0].innerHTML);
333 function addContent(t){
338 var ih = "<div><span></span></div><span class='thud'><button>blah</button></span>";
340 var tn = document.createElement("div");
342 dojo.body().appendChild(tn);
345 var nl = dojo.query("button", tn).connect("onclick", function(){
361 <h1>testing dojo.NodeList</h1>
366 <span id="c1">c1</span>