`

ext-js基础

    博客分类:
  • ajax
阅读更多
javascript的关键字
关键字(keywords)
引用
break else new case finally return void catch for switch while continue function this with default if throwdelete in try do instancesof typeof

var 在类或方法不使用,将变量会变成全局变量

基本数据类型
Number(数字类型)
1、整形常量
2、实际常量
特殊数据NaN、Infinity、isNaN()、isFinite()--(是否无穷)
Boolean(布乐值)
String字符串
null常量
undwfined常量(未定义)

方法名修饰为静态成员方法
火狐在firedug提供了console方法,它的console.dir(对象/方法名)列出所有属性和方法;
fuction getEvent(e){
  e=e||event;
  alert(e);  //兼容IE火狐
}
window.onload=function(){
document.ElementById("test").onclick=getEvent;
}

使用addEventListener或者attachEvent
w3c Dom标准
引用
[Object].addEventLister("name_of_event",fnHandler,bCapture);  //bCapture是否传播true/false冒泡
[Object].removeEventLister("name_of_event",fnHandler,bCapture);

IE中独有的事件监听方法:
引用
[Object].attachEvent("name_of_event",fnHandler);
[Object].detachEvent("name_of_event",fnHandler);

if(document.all){
//IE
document.ElementById("test").attachEvent("onclick",test);
}else{//Ff
document.ElementById("test").addEventListener("click",test,false);
}
//鼠标阻止右键事件 

<script type="text/javascript">
    window.onload=function(){
	  document.oncontextmenu=function(e){
	  e = e || event;
	  if(e.preventDefault){
	   e.preventDefault();
	   }else{
	    e.returnValue = false; //IE
	   }
	  }
	}
  </script>
  //默认事件
<script type="text/javascript">
    $(a).click=function(){
	  document.oncontextmenu=function(e){
	  e = e || event;
	  if(e.preventDefault){
	   e.preventDefault();
	   }else{
	    e.returnValue = false; //IE
	   }
	  }
	}
  </script>
可变参数:arguments
function sum(){
   var s=0;
   for(var i=0;i<arguments.length;i++){
     s+=arguments[i];
     }
     return s;
}

访问一个对象的构造函数,使用constructor
var a=1;
alert(a.constructor);
alert(typeof a);
var d1=[122,123];  //数组
alert(typeof d1 == "object" && d1.constructor==Array);

函数申明:
function s1(){
return 111;
}
alert(s1());
var s1=function(){
return 111;
}
alert(s1());
var s2=new Function("alert(123);");
s2();

闭包示例的:
function f1(){
  var dd=0;
  var f2=function(){
   dd++;
   alert(dd);
   }
   return f2;
 }
 var f3=f1();
 f3();
 f3();
 f3();

作用或与this
 var obj = new Object();
 obj.v ="this test";
 相当于 var obj2={v:"this test"};
 //作用或
 var b1 = {v:"this is b1"}
 var b2 = {v:"this is b2"}
 function b(d,r){
 alert(this.v+d+r);
 }
 b("11","22");  //输出undefined
 window.b("23","erer"); //输出undefined;
 b.call();  //调用一个函数b();===b.call();
b.call(b1,"13","35"); //输出:this is b1
b.apply(b2,["121","ewre"]);  //输出:this is b2
var b3={v:"this is b3",sayHello:function(){
 alert(this.v);
}}
b3.sayHello();  //输出this is b3
b3.sqyHello.call(b1);//输出this is b1


提供了类似于数组属性下标的方式访问
b3.v="23323";
b3["v"]="wewre"; 
for(var key in b3){
  alert(key+":"+b3[key]);//alert(key+":"+b3.key);
}
delete b3.v; // 删除属性
alert(b3.v);  //输出undefined
类的扩展,修改
var b=new Number(2);
b.add=function(b){
 return this+b;
}
alert(b.add(3));

在类型下添加prototype所有的对象都有这个方法
Number.prototype.add=function(b){
  return this+b;
}
alert(b.add(2)); //正常输出
var c=100;
alert(c.add(100).add(200).add(300));
构造一个数组:
Array.prototype.indexOf=function(v){
 for(var i=0;i<this.length;i++){
  if(this[i]==v) return i;
  }
  return -1;
}
var ddd=[1,2,3];
alert(ddd.indexOf(2));

继成
function classA(name){
  this.name = name;
  this.showName=function(){alert(this.name)};
}
function classB(name){
   //方法一
   this.newMethod = classA;
   this.newMethod(name);
   delete this.newMethod;
   /**方法二**/
   classA.call(this,name);
   //方法三
   classA.apply(this,[name]);
}
function classC(name){
  this.name = name;
}
obj = new classA("hello");
objb = new classB("by");
//方法四  原形链
classC.prototype=objb;
obj.showName();
objb.showName();
alert(objb.name);
var objc=new classC("obj c");
objc.showName();

多态
var a =[12,44,"hfhj",new Date()];
for(var s in a){
  alert(a[s].toString());
}

打字游戏
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> 打字游戏 </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 <script type="text/javascript">
  	var keys = [], currentKeys = [], gameTimer,maxNum=0,rightNum=0;
	for ( var i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {
		keys.push(String.fromCharCode(i));
	}

	function beginGame() {
		/*var div=document.getElementById("div1");
		moveLetter(div);*/
		gameTimer = setInterval(createLetter, 1000);
	}

	function stopGame() {
		if (gameTimer)
			clearInterval(gameTimer);
		var s="总字符数:"+maxNum+";正确的次数:"+rightNum;
		var msg=document.createElement("div");
		msg.innerHTML = s;
		document.body.appendChild(msg);
	}
	function moveLetter(div) {
		function moveNext() {
			var top = parseInt(div.style.top);
			if (top > (screen.availHeight - 240)) {
				clearInterval(timer);
				if(div.timeId)
				div.parentNode.removeChild(div);
				var ks=[];
				for(var i=0;i<currentKeys.length;i++){
				   if(currentKeys[i]!=div){
				      ks.push(currentKeys[i]);
				    }
				  }
				  currentKeys=ks;
			} else {
				div.style.top = (top + 30) + "px";
			}
		}
		var timer = setInterval(moveNext, 500);
		div.timeId = timer; //添加一个属性
	}

	function createLetter() {
		/*var div=document.createElement("div");
		div.style.top="30px";
		div.style.left=((screen.width-100)*Math.random())+"100px";
		div.style.position="absolute";
		div.innerHTML="<font size=\"18\"><b>A</b></font>";
		 */
		var le = document.getElementById("div1");
		var div = le.cloneNode(true);
		var keyIndex = Math.floor(Math.random() * 26);
		div.innerHTML = "<font size=\"18\"><b>" + keys[keyIndex]
				+ "</b></font>";
		div.style.left = ((screen.width - 100) * Math.random()) + "100px";
		div.style.display = "";
		document.body.appendChild(div);
		moveLetter(div);
		div.keyCode = keys[keyIndex]; //添加一个keyCode属性。
		currentKeys.push(div);
        maxNum ++;
	}

	function checkInputKey(e) {
		e = e || event;
		var ks = [];
		for ( var i = 0; i < currentKeys.length; i++) {
			if (currentKeys[i].keyCode === String.fromCharCode(e.keyCode)) {
				currentKeys[i].parentNode.removeChild(currentKeys[i]);
				 clearInterval(currentKeys[i].timeId);
				 rightNum ++;
                 delete currentKeys[i].timeId;				 
			} else {
				ks.push(currentKeys[i]);
			}
		}
		currentKeys = ks;
	}

	if (document.attachEvent) {
		document.attachEvent("onkeydown", checkInputKey);
	} else {
		document.addEventListener("keydown", checkInputKey, false);
	}
	//document.onkeypress=function(e){
	//alert(e);
	//}
</script>
 </HEAD>

 <BODY>
  <a href="javascript:beginGame()">开始游戏</a>  <a href="javascript:stopGame()">结束游戏</a>  <a href="javascript:createLetter()">创建新的节点</a>
  <div id="div1" style="position:absolute;top:30px;left:100px;width:50px;height:50px;display:none;"><font size="18"><b>A</b></font></div>
 </BODY>
</HTML>

ajax同步传输与异步传输
指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。
默认true,是异步传输,它不会等待服务器响应的结果,同步时,会一直等待响应,直到有结果时程序才继续向下执行。
function createXMLHttpRequest() {
		var objXMLHttp = null;
		//对于Mozilla、Firefox、Opera等浏览器
		try {
			objXMLHttp = new XMLHttpRequest();
		}
		//对于Internet Explorer浏览器
		catch (e) {
			var MSXML = [ 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0',
					'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0',
					'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ];
			for ( var n = 0; n < MSXML.length; n++) {
				try {
					//创建XMLHttpRequest对象
					objXMLHttp = new ActiveXObject(MSXML[n]);
					break;
				} catch (e) {
				}
			}
		}
		return objXMLHttp;
}
事件监听流程:
	function checkUser(user){
		var username = user.value;
		var xml = createXMLHttpRequest();
		xml.open("get","checkUser.jsp?name="+username); 
		xml.send(null);
		xml.onreadystatechange = function(){
			//alert("readyState:"+xml.readyState+"\t\r"+"status:"+xml.status);
			if(xml.readyState==4){
				if(xml.status==200 || xml.status==304){
					alert(xml.responseText);
				}
			}
		} 
}

如果用post方法时,必须设置请求头,如:xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
返回xml时通过responseXML返回,而不是responseText
通过返回JSON时,例如:将头文件改成text/json,{"code":"dfj","msg":"jfkdjk"},在js获得var msg = eval("("+xml.responseText+")"); code = msg.code;msg=msg.msg;

当回调函数需要传入参数时,要写一个匿名函数,在匿名函数中调用这个带参数的函数
例如:callback函数中添加两个属性可以
function(){handler(name,age);}

开始ExtJS
引入extjs样式文件
引入extjs的脚本库(一个是驱动adapte,另外一个ext-all.js)
ext应用代码,使用Ext.onReady来调用ExtJS组件
如果添加其它框架,要添加驱动相应adapte,及框架使用
第一个Hello world程序
Ext.onReady(function(){
	var win = new Ext.Window({
		width:500,
		height:400,
		title:"第一个窗口",
		buttons:[{text:"确定"},{text:"取消"}]
	});
	win.show();
});

显示一棵树
var tree=new Ext.tree.TreePanel({
	title:"小树一棵",width:200,height:200,
	root:new Ext.tree.AsyncTreeNode({text:"树根",children:[{text:"叶子1",leaf:true},{text:"叶子2",leaf:true}]})
});

分享到:
评论

相关推荐

    Ext-js 2.2

    Ext-js 2.2 是一个历史悠久的前端JavaScript框架,由Sencha公司开发,主要用于构建富互联网应用程序(RIA)。这个版本发布于2009年,是Ext-js发展过程中的一个重要里程碑,它为开发者提供了丰富的组件库、强大的数据...

    Ext-Gantt和相关js如ext-all.js ext-base

    Ext JS的核心文件包括`ext-all.js`和`ext-base.js`,它们为Ext-Gantt提供了必要的基础架构。 `ext-all.js`是Ext JS的完整版本,包含了所有组件、类和功能,适用于大多数开发需求。这个文件集成了Ext JS的所有核心...

    Ext-JS-4.1-Beta-3.zip

    - `ext-debug.js` 和 `ext.js`:分别对应未压缩和压缩的精简版库,只包含基础组件。 4. **ext-neptune-debug-w-comments.js, ext-neptune-debug.js**:Neptune是Ext JS 4.x中的一种主题,这些文件提供了Neptune...

    ext-base.js

    《EXT开发基础:详解"ext-base.js"与EXT框架》 EXT是一个强大的JavaScript库,它为Web应用程序提供了丰富的用户界面组件和数据管理功能。在EXT的开发中,"ext-base.js"扮演着至关重要的角色,它是EXT框架的核心部分...

    ext-4.0.7-gpl

    4. **ext-dev.js, ext-debug.js, ext.js** - 类似于前面的文件,这些可能是更基础的构建版本,可能不包含所有组件,但同样有开发和生产版本的区分。 5. **bootstrap.js** - 这是Ext JS的启动脚本,用于初始化框架并...

    Ext-JS-3-Cookbook源码

    Ext JS是一个广泛使用的JavaScript库,专门用于构建富客户端Web应用程序。在3.x版本中,它提供了强大的组件模型、数据绑定机制以及丰富的UI控件,如表格、树形视图、面板、表单等。这些特性使得开发者能够构建功能...

    ext-d3-pivot-d3-component.zip

    前者可能包含了EXT-D3的基础组件和核心功能,比如图表类、数据适配器以及与EXT JS框架集成的相关代码。后者则可能提供了Pivot-D3的具体实现,包括数据透视表容器、拖放交互逻辑和数据处理模块。 EXT-D3和Pivot-D3的...

    ext-air-3.1.0和ext-core-3.1.0

    - **简介**:Ext Core是Ext JS的基础组件,它提供了一组轻量级的JavaScript工具和UI组件。3.1.0是其特定的版本号,表明这是该库的一个稳定发行版。 - **功能**:包括DOM操作、事件处理、动画效果、AJAX通信、拖放...

    ext-cn-js-beta

    EXT库,源自EXT JS,是Sencha公司推出的一个JavaScript框架,主要用于构建交互式和数据驱动的Web界面。EXT4API-gh-pages文件则包含了EXT 4.x版本的API文档,这个版本在EXT系列中是一个重要的里程碑,引入了许多新...

    ext-air(for Ext2.2)

    **描述解析:** 描述提到,"结合adobe air技术,用extjs来开发桌面应用",这表明EXT-AIR提供了在EXTJS基础上构建桌面应用的能力。EXTJS通常用于Web前端开发,通过与Adobe AIR的集成,开发者可以利用EXTJS的组件和...

    搭建简单的EXT-GWT(GXT)的开发环境(四)ext-gwt(gxt)结合google map第三版开发

    总结,搭建EXT-GWT开发环境并结合Google Maps API V3,需要熟悉Java、GWT和EXT-GWT的基础知识,同时掌握Eclipse IDE的使用。集成Google Maps API涉及到API密钥的获取和在EXT-GWT中的应用。这个过程可能对初学者有些...

    Oozie_ext-2.2.zip

    ExtJS是一个强大的JavaScript框架,用于构建富客户端应用,其丰富的组件和强大的数据管理能力为Oozie的用户界面提供了坚实的基础。Oozie_ext-2.2.zip就是针对这种情况提供的解决方案,其中包含的ext-2.2目录下有...

    npm-ext-react-gen.zip

    npm(Node Package Manager)是Node.js的包管理器,用于安装、管理和分发JavaScript库和工具。 `ext-react-gen`工具是为了简化React组件开发流程而设计的。它通常会生成基础的文件结构和代码模板,帮助开发者快速...

    Ext-JS 3.0 Cookbook Packt Publishing PDF

    《Ext JS 3.0 Cookbook》是一本由Packt Publishing出版的专业技术书籍,主要面向那些已经具备一定JavaScript基础并对Ext JS框架有一定了解的开发人员。本书作者Jorge Ramon是一位经验丰富的软件开发者,在法律行业...

    ext-4.0.0jar.src

    3. **ext-all-debug-w-comments.js, ext-all-debug.js, ext-all.js, ext-debug.js, ext.js**:这些是Ext JS的核心JavaScript库文件,不同文件有各自的用途: - `ext-all-debug-w-comments.js`:包含完整的源代码,...

    npm-ext-react.zip

    在使用“npm-ext-react”之前,确保你已经安装了Node.js和npm,这是运行React项目的基础。接着,将解压后的“npm-ext-react.zip”文件放置到你的npm全局模块目录下。这个路径通常在系统环境变量`npm_config_prefix`...

    ext-4.1.0-beta-2.zip

    `ext.js`可能是EXTJS的核心库,不包含所有组件,只提供基础功能。 `ext-neptune-debug-w-comments.js`和`ext-neptune-debug.js`可能与EXTJS的主题有关。"Neptune"是EXTJS的一种视觉风格,这些文件提供了带有调试...

    最新Java后台管理系统(ext-js4,Hibernate 4,Spring mvc3)

    1. EXT-JS4:EXT-JS是一个强大的JavaScript库,用于构建富客户端的Web应用程序。EXT-JS4是其第四代版本,提供了丰富的UI组件和数据绑定功能。在这个后台管理系统中,EXT-JS4可能用于构建用户界面,如表格、表单、...

    Ext-Desktop

    【Ext-Desktop】是一个基于...总的来说,通过学习这些资源,你可以掌握ExtJS和Ext-Desktop的基本用法,了解如何构建桌面化的Web应用,并熟练地将Java后端与JavaScript前端相结合,打造高性能、用户体验优良的应用程序。

    EXT-js-中文手册

    ### EXT-js-中文手册知识点概览 #### 1. EXT简介 - **定义与背景**:EXT是一款基于JavaScript的开源框架,它简化了Web应用程序的开发过程,特别是那些需要复杂用户界面的应用。EXT最初由Jack Slocum创建,并在之后...

Global site tag (gtag.js) - Google Analytics