Dojo 基础1-语言及浏览器实用程序

  • 格式:doc
  • 大小:76.00 KB
  • 文档页数:6

Dojo 基础1.Dojo 查找Dom 节点Dojo.byId(‘’);2.Dojo类型检查isString()isArray()isFunction()eg:dojo.isString(11) 返回false3.字符串工具dojo.trim(‘ss ‘)i.其他工具1a)引入dojo.require("dojo.string ");b)使用alert(dojo.string.pad('bb',5,'a'));//向字符串bb 的左侧加入‘a’直到字符串的总位数是5alert(dojo.string.pad('bb',5,'a',true));//向字符串bb 的右侧加入‘a’直到字符串的总位数是5alert(dojo.string.pad(' ',5));//向字符串‘ ’ 的左侧加入0直到字符串的总位数是5 ,不写补齐的字符的话默认是0ii.其他工具2a)引入dojo.require("dojo.string");b)使用var a=dojo.string.substitute("aa ${a} bb ${b} ",{a:'aaa',b:'bbb'});alert(a);alert(dojo.string.substitute("aa ${0} bb ${1} ",["55","66"]));var b = dojo.string.substitute("aa ${a} bb ${b}",{a:'aaa',b:'bbb'},function(x){return "*"+x+"*"});alert(b);c)注意:因此方法中的${}会与el 表达式冲突,因此需要忽略elisELIgnored="true"iii.其他工具3alert(dojo.string.trim(" ss "));4.数组处理a)查找元素的位置var foo = ['aa','bb','cc'];var bar = ['11','22','33','44','33'];var a = dojo.indexOf(foo,'bb');alert(a);var b = dojo.indexOf(bar,'33',1);//第三个参数表示查找的起始位置alert(b);var c = dojo.indexOf(bar,'33',3);//第三个参数表示查找的起始位置alert(c);b)根据条件测试元素var test1=[1,3,7];var test2=[2,4,3];alert(dojo.every(test1,function(x){if(x%2!=0)return true;}));//truealert(dojo.every(test2,function(x){if(x%2==0)return true;}));//falsealert(dojo.some(test1,function(x){if(x%2!=0)return true;}));//truealert(dojo.some(test2,function(x){if(x%2==0)return true;}));//falsec)迭代操作元素var test1=[1,2,3,4];dojo.forEach(test1,function(node,index){alert(node+"--"+index)});d)转换元素var test1=[1,2,3,4];test1= dojo.map(test1,function(x,index){alert(x+"-"+index);return‘666’});alert(test1[0]);//666注意:map 方法可以得到处理后的数组返回值。

e)字符串式函数参数dojo.forEach(test1,"alert(index)");说明:item 表示当前正在处理的项array 表示当前正在处理的数组index 标识当前正在处理项的索引5.通过模块管理源代码var context = {};dojo.setObject("foo.bar.baa.a","aaaa",context);alert(context.foo.bar.baa.a);自定义模块a)在dojo 目录下新建js文件并根据自己定义的命名空间建立相应的文件夹。

b)在对应的js文件中写入相应的程序(js文件名为命名空间的最后一段名称)如dojo.require("aa.foo");这个命名空间就在dojo 目录下建立aa文件夹并建立foo.js 文件在js文件中加入实现代码dojo.provide("aa.foo");aa.foo.bb=function(){alert('ssss');}c)使用dojo.require("aa.foo");直接调用方法:aa.foo.bb();d)引用时重新设定路径dojo.registerModulePath("aa","../aa"); 将请求的对应内容改为设定的路径6.javascript 对象实用程序a)对象混入function a(){this.x='ssss';}function b(){var t=22;this.y='yyyyy';}function test(){}var test1 = new test;var a1 = new a;var b1 = new b;dojo.mixin(test1,a1,b1);alert(test1.x);注意:对象混入传入的必须是对象,通过mixin 方法将传入的所有对象的直接结果加载到第一个传入的对象中去,使用第一个对象可以访问相应的属性。

b)扩展对象原型function a(){this.x='ssss';}function b(){var t=22;alert('test');this.y='yyyyy';}function test(){}var a1 = new a;var b1 = new b;dojo.extend(test,a1,b1);var t = new test;alert(t.y);注意:扩展对象原型是将传入的第一个参数的对象原型进行扩展,因此第一个参数必须是函数声明不能是对象的实例,其他参数必须是对象的实例,第一个参数扩展后必须实例化才能使用扩展后的相应属性。

c)克隆对象i.潜复制:相当于传入对象的地址var a = new Object();a.x='aa';var b = a;b.x="bb";alert(a.x);ii.深复制:复制的对象的改动不会改变原对象var a = new Object();a.x='aa';var b = dojo.clone(a);b.x="bb";alert(a.x);7.操作对象环境dojo.doc //返回Documentdojo.body() //返回DomNodea)部分应用参数function addThree(x,y,z){alert(x+y+z);};f=dojo.partial(addThree,100,10);f=dojo.partial(f,1);f();说明:改方法可以分几次向方法中传递参数,待参数传递完成后再调用执行方法。

b)把对象连接到特定的环境vara={name:'aa',greet:function(){alert(+"aaa")},greet2:function(){alert("88")}}var b={name:'bb',greet:function(){alert(+"bbb")}}a.greet();b.greet();b.greet=dojo.hitch(a,"greet2");b.greet();说明:这样b的greet方法会被覆盖成a的greet2 方法。

c)委托和继承function foo(){this.talk=function (){alert()}}var test = dojo.delegate(new foo,{name:'55'});test.talk();8.D OM使用程序a)判定祖先var flag=dojo.isDescendant(dojo.byId('b'),dojo.byId('a'));判定第一个参数是否是第二个参数的子节点alert(flag);b)设置可选择性dojo.setSelectable("testinput",true);dojo.setSelectable(dojo.byId("testinput"),false);说明:第一个参数可以是id也可以是节点c)为节点添加样式//得到样式的值(第一个参数可以是id也可以是对应的节点)var color= dojo.style("a","backgroundColor");alert(color);//设置样式的值(第一个参数可以是id也可以是对应的节点)dojo.style("a","backgroundColor","red");//为节点或对应id的节点增加类样式dojo.addClass("a","class1");//检测节点是否含有第二个参数对应的样式var ishas = dojo.hasClass("a","class1");alert(ishas);//若第一个参数传入节点含有第二个参数样式则加入否则就移除样式dojo.toggleClass("a","class1");d)操作属性//操作属性//得到属性var id= dojo.attr("a","name");alert(id);//设置属性dojo.attr("a","name","nassss");id= dojo.attr("a","name");alert(id);//判断是否含有该属性var ishas = dojo.hasAttr("a","name");alert(ishas);//移除属性dojo.removeAttr("a","name");e)放置节点var node = document.createElement("input");//第一个参数是放置节点//第二个参数是将第一个参数传入的节点放置的参照节点//第三个参数是节点的放置位置first last 是指相对父节点的位置(这种情况第三个参数必须是插入新节点的父节点)// before after 是相对参照节点的位置dojo.place(node,dojo.byId('testinput'),"after");dojo.place(node,dojo.byId('testinput'),"before");dojo.place(node,dojo.byId('a'),"first");9.浏览器实用程序a)cookie 操作注意:需要引入dojo.require("dojo.cookie");//存入cookie值dojo.cookie("foo","aa",{expires : 30});var cookievalue=dojo.cookie("foo");alert(cookievalue);b)后退按钮处理(因浏览器不同,不一定能实现功能,仅将关键代码写出)引入和导包<script type="text/javascript" src="dojo/dojo.js"djConfig="parseOnLoad:true,dojoIframeHistoryUrl:'http://localhost:8080/TestDojo/2.jsp' ,isDebug:true"></script><script type="text/javascript">dojo.require("dojo.parser");dojo.require("dojo.back");代码:initialState = {back: function(){alert("back");console.log("back to init");} }state1={back:function(){alert("back2state1");},forword:function(){alert("forward2state1");},changeUrl:true}state2={back:function(){alert("back2state2");},forward:function(){alert("forward2state2");},changeUrl:true}dojo.back.setInitialState(initialState);dojo.back.addToHistory(state1);dojo.back.addToHistory(state2);以上内容要写到init函数中在body标签下加入dojo.back.init();。