1、获取页面上的HTML元素,并进行处理,使用Ext.get('elid')方法,参数为HTML元素的id值,由此可对获取到的元素进行各种处理。例如:
- var el = Ext.get("the-id");
- var appendEl = Ext.get("the-id-append");
- function fn1(){
- Ext.Msg.alert("提示","您在id为'the_id'的Element上按下了ctrl+c键");
- }
- el.addCls("special-css");//为元素添加样式表
- appendEl.addCls("special-css");
- appendEl.setWidth(240);
- appendEl.setWidth(240, true);
- el.focus();//将焦点移到el元素上
- el.addClsOnFocus("focus-css");//为得到和失去焦点添加和移除css类
- el.addClsOnOver("mouseover-css");//为鼠标移入移出事件添加和移除css类
- el.addClsOnClick("click-css");//为点击事件添加和移除css类
- el.setWidth(240);//将元素的宽度设为100相素
- el.setWidth(240, true);//将元素的宽度设为100并带有动画效果
- el.addKeyMap({key : "c",ctrl : true,fn:fn1,scope:el});//绑定el元素当键盘按下ctrl+c键时将呼叫fn函数
- el.addKeyListener({key:"g",ctrl:true},fn1,el);//和上面的addKeyMap的功能相同,只是参数的传递方式不同
2、获取页面上的HTML元素,还可用select方法,可以获取一系列元素,也可为之设定相同的事件,或者进行相同的设置,例如:
- var el = Ext.select(["div1","div2"],true);
- el.on("click",function tes(e){
- Ext.Msg.alert("提示","您点击了id为" + Ext.get(e.target).dom.id + "的节点");
- });
3、获取页面上的HTML元素,还可以用query方法,与前面的区别在于参数不同,例如:
- //选择元素为div其id为div1的节点的数组
- var el = Ext.query("#div1");
- //选择元素为div的且这些div具备属性为property1其值为pro1的节点的数组
- var targetD = Ext.query('div[property1=pro1]');
- if(el.length>0 || targetD.length>0){
- var msg = '';
- msg = "取得了"+el.length+"个div的id为'div1'的节点<br>"+"取得了"+targetD.length+"个类型为div<br>具备属性property1且其值为'pro1'的节点";
- msg += "<br>内容为:";
- for(var i = 0; i<el.length; i++)
- {
- msg += el[i].id + ":" + el[i].innerHTML;
- }
- msg += "<br>内容为:";
- for(var i = 0; i<targetD.length; i++)
- {
- msg += targetD[i].id + ":" + targetD[i].innerHTML;
- }
- Ext.Msg.alert('提示',msg);
- }
4、获取Ext的组件,用getCmp方法,然后根据其特定类型可以进行相应的处理,例如:
- //获得id为'panel1'的组件
- var comp = Ext.getCmp('panel1');
- Ext.Msg.alert('提示',"取得的id为'panel1'的组件的类型为"+comp.getXType());
- comp.setTitle("aaaaaa");
5、获取元素的DOM,使用getDom方法
- //获得id为'panel1'的组件的Dom,其执行结果和panel.el.dom相同
- var comp = Ext.getDom('panel1');
- Ext.Msg.alert('提示',"通过Ext.getDom取得的dom的id:"+comp.id+
- "<br>通过另一种方式取得panel的dom其id:"+panel.el.dom.id);
6、判断对象是否为空,用isEmpty方法,例如:
- //判断对象是否为空
- //当判断字符串时如果第二个参数不不同时结果也会不同
- //第二个参数表示'是否允许字符串为空'
- Ext.Msg.alert('提示',"我们已经实例化的panel是否为空?"+Ext.isEmpty(panel)+"<br>Ext.isEmpty('',true)的值:"+Ext.isEmpty("",true)+"<br>Ext.isEmpty('',false)的值"+Ext.isEmpty("",false));
7、Ext.each方法的使用示例:
- //定义一个集合
- var array = [],i;
- //为集合加入元素,这些元素为从0到9的数字
- for(i=0;i<10;i++){
- array.push(i);
- }
- function fn(item,index,allItems){
- //如果跌代对象的元素值大于5则终止跌代执行
- if(item>5){
- return false;
- }else{
- //为集合元素中值小于5的元素进行字符串的追加
- allItems[index] = item+"_st"
- }
- }
- function fn1(item,index,allItems){
- if(index>0)
- return false;
- //只执行一次
- Ext.Msg.alert('最后的处理结果',
- "<div style='width:160px'>最后集合为:"+allItems+"</div>");
- }
- //对集合进行字符串的追加
- Ext.each(array,fn);
- //打印集合的所有元素值
- Ext.each(array,fn1);
8、Ext.apply方法的使用示例:
- //定义两个对象,一个目标对象一个源对象
- var tarObj = {},srcObj
- srcObj = {};
- srcObj.name = "源对象";
- srcObj.text = "我的文本内容已经从srcObj中拷贝过来了";
- srcObj.width = "130px";
- //调用Ext.apply进行处理,从srcObj中拷贝属性到tarObj中
- Ext.apply(tarObj,srcObj);
- Ext.Msg.alert('Ext.apply示例',"tarObj的属性如下:<br>name:"+
- tarObj.name+"<br>text:"+tarObj.text+
- "<br>width:"+tarObj.width);
9、Ext.encode方法,将对象转换为字符串
- var person = {name : 'Tom', age: 24};//定义一个json对象
- Ext.Msg.alert("提示",Ext.encode(person));//打印将对象转变成字符串
10、Ext.htmlDecode方法示例:
- Ext.Msg.alert("提示",Ext.htmlDecode("<table width='240' border='1' id='tab1' cellspacing='2' cellpadding='4'><tr><td>简单的html表格<input type='button' value='按钮'></td></tr></table>"));
11、Ext.typeOf方法示例:
- var panel = new Ext.Panel({//实例化了一个对象
- className:"test",
- title:"示例",
- renderTo:'sub1',
- width:'300px',
- html:"<div id='div1' style='height:200px'></div>"
- });
- var el = Ext.select(["div1"],true);
- var array1 = new Array();//实例化了一个数组
- el.on("click",function tes(){
- Ext.Msg.alert("提示",'panel的类型是:'+Ext.typeOf(panel)+',array1的类型是:'+Ext.typeOf(array1));
- });
12、Ext.core.DomHelper示例:
- Ext.core.DomHelper.append(Ext.get("div1"),"<br>新追加了文本",true);
- //给id为div1的元素指定一个样式表
- //其样式表的形式可以是直接用文本,如:font-size:18px
- //也可以用文本表示的对象,如:{font-size:18px;}
- Ext.core.DomHelper.applyStyles(Ext.get("div1"),"font-size:18px;color:green;font-weight:bold;");
- var str = Ext.get("div1").dom.outerHTML;
- //由于Ext.Msg.alert会展示alert里的html
- //所以我们特意用文本框来展示应用了样式表后的div效果字符串
- Ext.Msg.alert('DomHelper示例','<textarea rows="6" cols="35">'+str+'</textarea>');
- //首先通过DomHelper.createTemplate创建一套模板
- var test = Ext.core.DomHelper.createTemplate('<div name="{id}">'+
- '<span class="{cls}">{name:trim} {value:ellipsis(10)}<br>第二行文本</span>'+
- '</div>');
- //通过定义的模板替换模板中的变量,然后追加在div的id为div1的div里面进行展现
- test.append(Ext.get("div1"),{id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'},true);
- //给指定的div1在其后插入一个新的div,类似的有insertBefore方法,insertFirst方法
- Ext.core.DomHelper.insertAfter(Ext.get("div1"),{id: 'item2', html: "<div id='div2' style='height:60px;padding:5px;background-color:#FEFCE7'>我是新追加的Div对象</div>"});
- //给指定的div1在之前插入一个新的html
- Ext.core.DomHelper.insertHtml("beforeBegin",document.getElementById("div1"),"我是新插入的Html文本");
- //给指定的div1替换新的html
- Ext.core.DomHelper.overwrite(document.getElementById("div1"),"我是新替换的Html文本");
13、DomQuery用法示例:
- //获到所有的以id为div0为父节点的div
- //(在第二节中讲述过Ext.query的使用规则,忘记了的读者可以温习一下)
- var tarArry = Ext.query('#div0 div');
- //选择那些不包含id为div1的节点
- var except = Ext.core.DomQuery.filter(tarArry,"#div1",true);
- //选择那些包含id为div1的节点
- var include = Ext.core.DomQuery.filter(tarArry,"#div1",false);
- //对对数组中是否包含指定id的节点进行判断
- var isInclude = Ext.core.DomQuery.is(except,'#div0');
- //选择以id为divo的所有div子点中的第一个节点
- var selectNode = Ext.core.DomQuery.selectNode("#div0 div");
- function retStr(array){
- var str ="";
- for(var i=0;i<array.length;i++){
- if(i<array.length-1)
- str+=(array[i].id+";");
- else
- str+=array[i].id;
- }
- return str;
- }
- Ext.Msg.alert('返回结果',"不包含id为'div1'的所有div的id为:"+retStr(except)+
- "<br>包含id为div1的所有div的id为:"+retStr(include)+
- "<br>通过Ext.core.DomHelper.is(except,'#div0')的返回结果"+isInclude+
- ",<br>表示"+retStr(except)+"是否包含id为div0的节点:"+
- "<br>在id为div0的第一个子节点的id是:"+selectNode.id);
14、Ext.util.CSS示例:
- //通过传递一个样式表描述文本创建一个指定的样式表和id为the绑定在一起
- Ext.util.CSS.createStyleSheet(".myclass{color:blue}","the");
- var cssObj = Ext.util.CSS.getRule(".myclass",true);
- Ext.Msg.alert('获取的信息','创建样式表<br>获取myclass样式表中规则的字体颜色:'+cssObj.style.color);
- Ext.util.CSS.createStyleSheet(".a1{font-size:12px;color:blue;}","thecss");
- var pan = new Ext.panel.Panel({
- title:'添加css并移除',
- html:'首先我们添加一个样式,然后移除他'
- ,
- height:200,
- width:300,
- cls: 'a1'
- });
- pan.render("hr_panel");
- setBtn = new Ext.button.Button(
- text : '移除样式',
- width : 50,
- handler : function(){
- Ext.util.CSS.removeStyleSheet("thecss");
- }
- });
- setBtn.render("setBut");
- //定义使用改变个性化定制的控件
- //该控制实际上为一个可供选择样式表值的下拉框
- //当改变下拉框的选择时则调用Ext.util.CSS.swapStyleSheet来替换其样式表路径
- Ext.onReady(function(){
- var themes = [
- {theme:'默认', css:'ext-all.css'},
- {theme:'黑色',css: 'ext-all-access.css'},
- {theme:'红色',css: 'ext-all-red.css'}];
- //创建主题数据模型
- Ext.regModel('Theme', {
- fields: ['theme','css']
- });
- //创建主题数据源
- var themeStore = Ext.create('Ext.data.Store',{
- model : 'Theme',
- data : themes
- });
- //创建主题切换选择框
- var themeChange = Ext.create('Ext.form.ComboBox',{
- id : 'themeChange',
- width : 150,
- labelWidth : 60,
- labelSeparator :':',//分隔符
- fieldLabel:'样式选择',
- store : themeStore,
- editable : false,
- triggerAction: 'all',//单击触发按钮显示全部数据
- store : themeStore,//设置数据源
- displayField : 'theme',
- valueField : 'css',
- queryMode: 'local',//本地模式
- value:'ext-all.css',//默认风格
- listeners : {
- 'collapse' : function() {
- Ext.util.CSS.swapStyleSheet('theme', 'extjs4/resources/css/'+ this.getValue());
- contentIframe.window.themeChange(this.getValue());
- }
- }
- });
- //定义panel
- Ext.create('Ext.form.FormPanel',{
- title:'Ext.form.ComboBox本地数据源示例',
- renderTo: Ext.getBody(),
- bodyPadding: 5,
- frame : true,
- height:100,
- width:270,
- defaults:{//统一设置表单字段默认属性
- labelSeparator :':',//分隔符
- labelWidth : 70,//标签宽度
- width : 200,//字段宽度
- labelAlign : 'left'//标签对齐方式
- },
- items:themeChange
- });
- });
15、格式化字符串示例:
- var str = "<table width='300' cellspacing=1 border=1 cellpadding=1><tr><td>table string</td></tr></table>";
- var str1 = " aV";
- var dat = new Date();
- var str2 = 12345;
- var str3 = 1.2345;
- Ext.Msg.alert(
- "提示",
- "原str为:"+str+"<br>ellipsis(str,5)后为:<br>"+Ext.util.Format.ellipsis(str,5)+"<br><br>"+
- "原strl为:"+str1+"<br>进行capitalize(str1)后为:<br>"+Ext.util.Format.capitalize(str1)+"<br>"+
- "<br>原dat为:<br>"+dat+"<br>"+
- "进行date(dat,'yyyy/mm/dd')后为:<br>"+Ext.util.Format.date(dat)+"<br><br>"+
- "注意调用htmlDecode(str)后展现出来的是一个带边框的表格:<br>"+Ext.util.Format.htmlDecode(str)+"<br>"+
- "原strl:"+str1+"<br>经过lowercase后为:<br>"+Ext.util.Format.lowercase (str1)+
- "<br>原str2:"+str2+",经过number后为:"+Ext.util.Format.number(str2,"-1234.0")+
- "<br>原str3:"+str2+",经过number后为:"+Ext.util.Format.round(str3,2)
- );
- //通过用字符串描述一个对象
- var jsonStr = "{name:'the json name', value: 'the json sample'}";
- //将该字符串进行编码,这时将形成一个含有逻辑关系的对象
- var obj = Ext.JSON.decode(jsonStr,true);
- //定义一些对象,最后用数组包装起来
- var g='g',h='h',e =[g,h],f='f',b=[e,f],a = [b,'c'];
- //将该数组中存放的对象进行解码,打印该字符串
- var endA = Ext.JSON.encode(a);
- Ext.Msg.alert('提示',endA);
16、MixedCollection示例(还有first,get等方法):
- var item = new Ext.util.MixedCollection();
- var item2 = new Ext.util.MixedCollection();
- var a = {name:'a'};
- var b = {name:'b'};
- item.add('01',a);
- item.add('01',b);
- item2.add('01',a);
- item2.add('02',a);
- Ext.Msg.alert('提示','当已存在关联的索引时往01关联以象,item的个数为:'+item.length+'<br>'+'当不存在关联的索引往索引关联对象,item的个数为:'+item2.length);
- var item = new Ext.util.MixedCollection();
- var arr = [];
- arr.push({name:'a'});
- arr.push({name:'b'});
- item.addAll(arr);
- Ext.Msg.alert('提示','原item中的对象个数为:'+item.length+'<br>当加入arr数组中的两个对象后item中的对象个数为:'+item.length);
- var item = new Ext.util.MixedCollection();
- var arr = [{name:'a'},{name:'b'}];
- item.clear();
- Ext.Msg.alert('提示','当调用clear()后item的对象个数为:'+item.length);
- var item = new Ext.util.MixedCollection();
- item.addAll([{name:'a'},{name:'b'}]);
- var col = new Ext.util.MixedCollection();
- col = item.clone();
- item.clear();
- Ext.Msg.alert('提示','当调用item的clone()后返回的col的对象个数为:'+col.length);
- var item = new Ext.util.MixedCollection();
- var obja = {name:'a'};
- item.add('obj1',obja);
- Ext.Msg.alert('提示','集合中是否含有以obj1为关联索引的对象:'+item.containsKey('obj1')+'<br>集合中是否含有对象obja:'+item.contains(obja));
- var item = new Ext.util.MixedCollection();
- var obja = {name:'a'};
- item.add('obj1',obja);
- item.add('obj2',{name:'b'});
- item.each(function(tempObj){
- tempObj.name='newA';
- Ext.Msg.alert('提示','通过调用each后的名称为:'+tempObj.name);
- });
- var item = new Ext.util.MixedCollection();
- item.on('add',function(index,o,key){
- Ext.Msg.alert('提示',' 当前有对象加入,加入后的index是:'+index+'<br> 该对象的name是:'+o.name+'<br> 加入对应的key是:'+key);
- });
- item.add('obj2key',{name:'nobj2name'});
- var item = new Ext.util.MixedCollection();
- item.on('remove',function(o,key){
- Ext.Msg.alert('提示','当前移除的对象的name是:'+o.name+'<br>其key是:'+key);
- });
- item.add('obj2key',{name:'nobj2name'});
- item.removeAtKey('obj2key');
- var item = new Ext.util.MixedCollection();
- var obj1 = {name:'obj1Name'};
- var obj2 = {name:'obj2Name'};
- item.add('obj1Key',obj1);
- item.replace('obj2Key',obj1);
- item.on('replace',function(key, oldO, newO){
- Ext.Msg.alert('提示','当前被替换的对象的name是:'+oldO.name+'<br>其key是:'+key+'<br>新对象的name是:'+newO.name);
- });
- item.replace('obj2Key',obj2);
17、线程运行实例:
- var task ={
- run:function(){
- Ext.Msg.alert('提示','线程已经运行!我将每次运行将重复5次!但10秒后我将停止!');
- },
- interval:1000,
- repeat:5,
- duration:10000
- };
- var task1 = new Ext.util.TaskRunner();
- task1.start(task);
18、获得文本块的高和宽示例:
- var t = new Ext.util.TextMetrics('id01',5);
- Ext.Msg.alert("测试","通过getSize('the text')取得的文本块的宽度是:"+t.getSize('the text').width+
- "<br>通过getHeight('new text test')取得的文本块的高度是:"+t.getHeight('new text test')+
- "<br>measure('id01','重新测试方法',3)方法测试"+Ext.util.TextMetrics.measure('id01','重新测试方法',3).width);
19、键盘绑定对象示例:
- var el = Ext.get("id01");
- var nav = new Ext.KeyNav(el,{
- "left" : function(e){
- alert('向左的按键被按下了');
- //this.moveLeft(e.ctrlKey);
- },
- "right" : function(e){
- alert('向右的按键被按下了');
- //this.moveRight(e.ctrlKey);
- },
- "enter" : function(e){
- alert('回车键被按下了');
- //this.save();
- },
- scope : el
- });
- nav.enable();
相关推荐
总结来说,"Extjs4 grid使用例子"是一个实践教程,展示了如何在MVC架构下利用ExtJS4的Grid组件处理数据,实现数据的增删改功能。通过这个例子,开发者可以学习到MVC的设计理念,以及如何有效利用Grid组件提升Web应用...
总结来说,ExtJS4作为ExtJS系列的一个重要版本,不仅增强了组件化、数据管理、事件处理、图表和表单等功能,还在性能和易用性上做了很多改进。对于需要构建复杂、交互性强的Web应用的开发者来说,ExtJS4无疑是一个...
总结起来,"Extjs4登录功能+验证码+struts2"涉及到的知识点有: 1. ExtJS4的表单组件和布局:如何使用`Ext.form.Panel`、`Ext.form.field.Text`和`Ext.button.Button`创建登录表单。 2. 验证码实现:前端展示和后端...
总结来说,这个EXTJS4开发的图片文章管理项目实例展示了前端EXTJS4的强大UI构建能力,后端JAVA的稳定处理性能,以及MYSQL数据库的数据存储功能。通过学习这个实例,开发者可以深入理解EXTJS4的MVC架构,JAVA的Web...
总结起来,搭建ExtJS4开发环境主要包括以下几个步骤: 1. 下载并解压ExtJS4的版本。 2. 选择需要的资源文件导入Eclipse项目。 3. 在HTML页面中引入ExtJS的样式和脚本文件。 4. 使用`Ext.onReady`初始化组件库并编写...
总结起来,在Eclipse中开发Extjs4代码,我们需要: 1. 安装Eclipse并确保其支持JavaScript开发。 2. 安装Spket插件以获取代码提示和智能感知功能。 3. 导入`ext-40.jsb2`文件,使Spket理解ExtJS4的API。 4. 获取...
总结来说,EXTJS4的ComboBox可以通过自定义事件处理和组件嵌套实现点击下拉框显示Grid的效果。这需要理解EXTJS的事件系统、组件创建和布局管理。同时,正确引用EXTJS库文件和资源对于应用的正常运行至关重要。
总结来说,"ssh+extjs4整合开发"涉及到的技术栈是Java后端开发的强大组合,结合了Spring的灵活性、Struts2的MVC架构以及Hibernate的对象关系映射,再加上EXTJS4的富客户端能力。这种整合使得开发者能够构建出高效、...
### Extjs4 权威指南知识点总结 #### 一、Extjs4简介与获取途径 - **概述**:Extjs4是一款基于JavaScript的企业级富客户端Web应用程序开发框架,旨在简化前端开发过程,提供丰富的UI组件和强大的数据处理能力。 - ...
在"ExtJS4 2学习 21 动态菜单与表格数据展示操作总结篇"中,我们将深入探讨两个核心组件:动态菜单(Dynamic Menus)和表格数据展示(Grid Data Display),以及如何在实际应用中进行操作。 动态菜单在Web应用中...
总结来说,EXTJS 4的树形表格组件是一个强大且灵活的工具,它集成了树状结构和表格的特性,为开发者提供了一种高效展示和操作层次数据的方式。无论是在桌面端还是移动端的应用开发中,EXTJS 4的TreeGrid都是一个值得...
通过以上知识点的总结,我们可以看到 Extjs 提供了丰富的配置选项和强大的功能,可以帮助开发者快速实现各种复杂的功能。对于初学者来说,掌握这些基本知识点是非常重要的。当然,Extjs 还有很多更高级的功能等待...
总结而言,Extjs4开发笔记提供了开发一个基于Extjs4框架和MVC模式的员工管理系统的过程和细节。作者从准备工作讲起,到环境配置、目录结构、文件分离,再到框架搭建,每个环节都详细记录了其开发经验和遇到的问题。...
总结,结合ExtJS 4的富客户端功能和Struts2的服务器端处理能力,我们可以构建出高效且用户体验良好的登录系统。这涉及到客户端的表单设计、事件处理,以及服务器端的数据验证和逻辑处理。通过深入理解这两个框架,...
总结,ExtJS4.0 的 MVC 实现为开发者提供了强大的工具来构建复杂的 Web 应用。通过理解并熟练运用 MVC 架构模式,我们可以创建出具有高效数据管理、灵活用户交互和易于维护的 ExtJS 应用程序。学习和掌握这些知识,...
EXTJS TreePanel 和 Ext.data.Node 提供了丰富的功能,可以灵活地处理树形数据结构,支持动态加载、选择、事件监听等多种操作。在实际开发中,开发者可以根据需求自定义扩展这些组件,以满足复杂的应用场景。同时,...
通过本总结例子中的源代码,读者可以更直观地学习EXTJS Grid的用法,掌握其核心功能,并结合实际项目需求进行扩展和优化。对于EXTJS初学者来说,这是一个很好的实践平台,而对于有经验的开发者,这则是一份有价值的...
总结来说,ExtJS 4的Accordion布局和Border布局是两种非常实用的布局模式,它们能够帮助开发者创建出灵活多样的用户界面。Accordion布局适合有限的空间内展示多个面板,而Border布局则适用于需要分割屏幕并进行动态...
总结,Ext JS 4 Charts 提供了一套强大且灵活的工具来创建各种类型的图表。通过理解其核心概念、配置选项以及实例创建过程,开发者可以轻松地在Web应用中实现数据可视化,从而提升用户体验和业务洞察力。提供的...
以上是对 ExtJS 4.0 技术中文视频中的主要知识点的总结。这些视频涵盖了 ExtJS 4.0 的各个方面,从基础概念到高级功能均有涉及,适合不同程度的学习者观看。希望这些知识点能帮助大家更好地理解和掌握 ExtJS 4.0 的...