必须了解的前端入门知识 HTML CSS与JS

								HTML
1.网页页面内右击——显示源码 ,相同的代码在不同的浏览器上显示效果不一样。
2.HTML是超文本语言和标记语言:
	超文本:就是指页面内可以包含图片、连接等非文字内容。
	标记语言:就是使用标签的方法将需要的内容包括起来。如:<a>www….</a>
3.HTML不编译直接使用浏览器运行,以.html或 .htm后缀,由标签组成不区分大小写,开始标签结束标签组成,无结束标签以“/”结尾。
4.HTML结构包括:head 和body 、html
		head:存放页面的重要信息,一般不再页面上显示
					子标签:
						title:标题
						meta:用来存放页面重要信息
						link:样式
						style:样式
	Body:存放要展示的信息。
	html:为根标签。
			<html>
				<head>
					<title> Hello html </title>
				</head>
				<body>
				</body>
			</html>
5.注释与Java一样不能嵌套:注释为<!--   --> 。
6.源码中的代码格式不会显示在页面中,只能使用标签来体现。
8.标签:若哪个属性自适应可用100%
	1.标题:共六级 H1-h6:
		<h1> </h1>
			特点:依次变小,加粗字体,默认换行。
	2.水平线:
		<hr  />:直接就这么用。
			size:设置线的粗细   noshade:有无阴影 noshade
			width:设置宽度  开标签的内容称之为属性:键=“值”
			设置尺寸方案:
				(1)值px:(40px)值加像素
				(2)值 :40
				(3)使用百分比:50%     (只有横向上使用)
	3.字体:
		<font >  </font>
			Color :设置字体颜色 Alt+/或自己配色#000000每两位代表红绿蓝依次 共六位值。
			Face:  字体
			size:   字体大小(取值1-7)按照规范的取值设置
 
	4.加粗 斜体:
		<b>  </b><strong></ strong>	<i>  </i> 可嵌套
	5.换行:中间有空格
		<br  />
	6.转义字符:
		&nbsp:空格   &copy:?   &lt:小于  &gt:大于
	7.段落:
		<p> </p>  特点:段落间自动加换行。
	8.添加图片	
		<img  src=”” alt=””  title=””> 
		属性有:
			alt:图片无法显示时的替代文本。
			title:鼠标移动到图片上显示的文字。
			width:设置图片宽度
			height:定义图片高度
		路径: ../:代表上一级目录。
		相对路径:同一片的路径是根据当前html文件的位置推导的,故为相对路径
	9.列表:
		有序列表:<ol>  ——orderd list
					<li></li>
			   </ol>
		无序列表:  <ul>
					<li></li>
			    </ul>
		type:ol——A、a、1…
	              ul——circle、disc、square	
	10.超链接:
		 <a href=  target=””> </a>
		 href:连接路径  
		 target:页面控制
			_black:开启新页面显示内容。
			_self  :新页面覆盖就页面(默认)。
			自定义:给部分页面起名,参数则用自定义名,则在此部分页面显示。 
9.布局:
	1.表格进行页面布局
		<table>  创建表的快捷方式:tr*行数>td*列数 +  tab
		认为:任何数据显示都可以存储在表格中,表格由行与列组成。
			<tr>:行
				<td>:列
				</td>
			</tr>
		</table>
		table属性:
			border:设置边框粗细
			设置间距:cellpadding=”0px “ 元素与单元格之间的间距
					  cellspacing=”0px”  单元格之间的间距
			width:表格的宽度
			bgcolor:单元格的背景色
 
			align:
				td:设置当前单元格的对齐方式  tr:设置所有单元格的对齐方式
				table:设置表格本身在body中的对齐方式,单元格不受影响
		表格的跨行跨列:
			跨列:<td colspan=”列数”> </td>
			跨行:<td rowspan=”行数” ></td>
			跨行又跨列:<td colspan=”列数”  rowspan=”行数”></td>
 
	2.框架布局 <frameset><body>不共存
			上下布局:<frameset rows=”30%,*” >   rows=”
						<frame/>
						<frame/> 		
					  </frameset>
			左右布局:<frameset cols=”30%,*”>   cols=””
						<frame/>
						<frame/>
					  </frameset>
			上下加左右:
					<frameset rows=”30%,*” > 
						<frame noresize=”noresize”/>
						<frameset cols=”20%,*”>
							<frame noresize= noresize”/>
							<frame noresize= noresize”/>
						</frameset>
					</frameset>
			<frameset>属性:rows、cols属性取值:值1、值2、值3…..一值表分一块,	多值使用“,”分割。*:代表剩余量。
			<frame>属性:src:    确定页面的路径
				  noresize:框架分割线能不能移动 noresize=:”noresize” 设置不可拖动
				  name:  框架页面的名字
			 
			*如何不同的frame显示相应的页面
				添加属性:src=”页面路径”
			*左侧的菜单栏单击时,如何将内容显示在右侧
				A、右侧frame设置name属性
				B、左侧页面路径的超链接的target=”右侧的frame的name值”
	3.div+CSS		
			
	
							HTML表单&CSS
 
 
Web执行流程:浏览器将数据发到服务器  服务器处理数据  服务器将结果返回浏览器。
	提交到服务器端数据格式:域名?键1=值&键2=值2&。。。。
	表单涉及到要素:
		*要发送到服务器的地址 <form>中使用action=“服务器URL”
		*<input>输入项让客户 输入  
		*程序员要指定键  即输入项中输入name,name即输入的键。
		*发送方式 默认method为GET即默认,POST则为不显示数据
		name:
1.表单标签:
  <form>:将数据提交到服务器,负责收集数据的标签必须放在表单标签体内
	属性:
		action:  请求路径,确定表单提交到服务器的地址。
		method:请求方式,常用取值只有:GET、POST
			GET:  默认值 提交的数据追加在请求路径后面  
				   请求路径长度有限,故get请求的数据有限。
			POST:提交的数据 不 追加在请求路径后面  请求的数据以流的形式传输
2.输入域标签 :
  <input type=>:获得用户输入的信息,type属性值不同,搜集方式不同
	Type表单输入项的属性值:
		text:	 文本框,单行
		password:密码框,以黑圆点显示
		radio:单选框,放到同一个组,组的指定 即两个input的name值要一样 必须要有value值,否则传的为on默认选定:checked =“checked”/ true;
		submit:提交按钮
		checkbox:复选框 name 相同,也要有value值 否则传的为on 
				 默认选定:checked =“checked”/true;
		file:文件上传按钮,提供选择文件
		hidden:隐藏字段,存储不需要在客户端显示但要发送给服务器的数据。很重要
		reset:重置按钮。将表单恢复默认值。
		button:普通按钮,常与JavaScript结合使用。
 
	name:  元素名,如果需要表单数据提交到服务器,必须有name服务器通过此属性获取到提交的数据。
	value:   设置input标签的默认值,submit和reset按钮显示数据,其他的均是提交数 据网址上显示的值,若未设置则为name值=on
	size:    设置长度
	checked: 单选框或复选框默认被选中。
	readonly: 是否只读,不允许修改,数据依据可以传入服务器
	disabled: 不可用,且不回显,即不发送到服务器
	maxlength:最大长度
	required: 此input标签为必填项。
 
3.下拉列表:
	<select>	:进行多选和单选,需使用标签<option>指定列表项
		name:发送给服务器的名称
		multiple:取值为multiple表示多选
 
		<option>子标签:下拉列表中的一个选项
			selected:勾选当前列表项
			value:发送给服务器的选项值
4.文本域:
	<textarea>:可输入多行
		name:名字
		rows:指定行数
		cols:指定列数
 
							CSS层叠样式表
1.HTML与CSS关系:
	HTML:主要存储网页中的内容
	CSS:主要对HTML内容进行装饰的
2.CSS一般结合HTML标签使用:常用标签div和span。
	div:进行区域划分,独自占一行,自带换行。
	span:不换行,区域刚好包含当前内容
3.注意:
	CSS样式选择器 严格区分大小写,属性和属性值不区分大小写,多属性间“;”分割,若此属性值由多词组成引号引起。
 
4.HTML引入CSS   style
	1.行内样式:
		* HTML中使用style属性,编写CSS代码
			<a style=”color:#f00;font-size:30px;”>传智博客</a>
 
	2.内部样式:内嵌式  
		*在HTML的<head>标签中使用 <style> font{ 参数} </style>
			<style type=”text/css”>
				font{
					Background-color:#ddd;
				}
			</style>
 
	3.外部样式:链入式。
		将样式放在以.css为扩展名的外部文件中,HTML通过
	  <link rel=“stylesheet” href=“CSS文件路径”>。一个文件多次使用。 
		rel:属性规定当前文档与被链接文档之间的关系
	*优先级:行内样式最高,离标签越近优先级越高
 
5.CSS选择器(内部样式)   选择CSS样式作用在哪些标签上
 
	*id选择器:针对一个
		#id名{属性1:属性值1;属性2:属性值;…..}  id不能以数字开头。
 
	*类选择器 针对一类
		.类名{属性1:属性值1;属性2:属性值;…. }
 
	*元素选择器
		标记名{属性1:属性值1;属性2:属性值;…..}
		h1{color:#f00;font-size:50px;}
		<h1>传智博客</h1>
 
	*属性选择器★  (派生的选择器)
			要求:
				html元素必须有一个属性不论属性是什么且有值  <xxx nihao="wohenhao"/>
				css中通过下面的方式使用
					元素名[属性="属性值"]{....}
					例如:
						xxx[nihao="wohenhao"]{....}
 
	*层级(后代)选择器:给父标签的后代标签设置样式
		父标签 后代标签{属性1:属性值1;属性2:属性值;…..};
 
    了解的选择器
		锚伪类选择器  顺序固定
			a:link {color: #FF0000}	/* 未访问的链接 */
			a:visited {color: #00FF00}	/* 已访问的链接 */
			a:hover {color: #FF00FF}	/* 鼠标移动到链接上 */
			a:active {color: #0000FF}	/* 选定的链接 */
 
6. 块标签:以区域块方式出现。每个块标签独自占据一整行或多整行。
		常见的块元素:<h1><div><ul>等
   行内元素:不必在新的一行开始,同时也不强迫其他元素在新的一行显示。
	常见的行内元素:<span><a> 等
 
6.CSS的样式参数  均在选择器的{}内 css样式一般会有“-”
	
	字体
		font-family:设置字体(隶书) 设置字体家族
		font-size:设置字体大小
		font-style:设置字体风格
 
	文本:改变文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进
		color:文本颜色
		line-height:设置行高
		text-decoration: 向文本添加修饰。 none underline
		text-align:对齐文本
	列表:
		list-style-type:设置列表项的类型 例如:a 1  实心圆 
		list-style-image:设置图片最为列表项类型 使用的时候使用 url函数  url("/i/arrow.gif");
	背景:
		background-color:设置背景颜色
		background-image:设置图片作为背景 url
 
	边框和尺寸:
		border:宽度 样式 颜色  border:1px solid #f00
				样式取值:solid 实线 none 无边 double 双线
		width 、height:标签的宽度和高度
	设置超链接的样式:
		去除下划线:text-decoration
	布局:
		float:浮动 
			 属性值:left  right  none(默认不浮动)
			 clear:清除浮动的影响
				属性值:left  right  both
       			 现象:有的浮动有的不浮动
             		页面分两部分天花板和地板,客户从上向下看,两部分重合。消除重叠:clear
 
	转换:
		 块标签:以区域的方式出现。每块单独整行或多整行。
				常见块元素:<h1>  <div>  <ul>
		 行内元素:不必新开始一行,
			常见行级元素:<span>  <a>
		 行内元素与块元素转换:display
			选择器{display:属性值}  
			block:此元素将显示为块元素 
			none:此元素将被隐藏,也不占用页面空间
			inline:此元素将显示为行内元素,(行内元素默认的display属性值) 
 
	修改样式
		操作css属性
			document.getElementById("id").style.属性="值"
			属性:就是css中属性 css属性有"-" 例如:backgroud-color
				若有"-" 只需要将"-"删除,后面第一个字母变大写即可
 
7.CSS的盒子模型:网页f12可看3D视图
 
   即可以嵌套 可平级。CSS一些组件可以看做是盒子 body是大盒子 div是小盒子
	padding:内边距,与内部盒子的距离 但置右和下可能无效
		padding-top:上内边距
		padding-left : 左内边距
   border:边框 
	border-top-style:上边距样式
	border-left-style:左边距样式
 
   margin:外边距,即不同盒子间距离 但置右和下可能无效
		margin-top:外上边距
	margin-left : 外下边距
 
8.HTML+CSS--------------------没有动态效果的页面。
 
 
								JavaScript  
 
1. JavaScript开发交互式的web页面,轻量级的脚本语言。不需要编译,直接嵌入在HTML页面,由浏览器执行。
 
2. 编译型计算机语言       (效率高)
	源码编译生成机器码,每次执行都执行机器码
  解释型计算机语言
	编写源码,每次执行都是执行源码
 
3.作用:
	1. 添加页面动画效果,提供用户操作体验
	2. 主要应用有:嵌入动态文本于HTML页面、对浏览器事件做出响应、读写HTML元素、验证提交数据、检测访客的浏览器信息等
 
4.JS引入方式
	内嵌式: <head>中,通过<script >
		<script type=”text/javascript”>
			Js代码
		</script>
	外联式:在HTML中,通过<script src=””>引入
		<script src=”js代码地址” type= “text/javascript” charset=”utf-8></script>
 
5.JS学习路线
	基本语法-----ECMAScript:基本语法(语法,语句)
		变量、运算符、流程控制、方法
	对象:
		BOM:浏览器对象
		DOM:操作文档中的元素和内容。
 
  1).变量
	1. 命名规范:?	
		必须以字母或下划线开头,中间可数字、字符或下划线
 		变量名不能包含空格等符号
 		不能使用JavaScript关键字作变量名,如:function
 		JavaScript严格区分大小写。
	2.变量的声明:var 变量名; 	//JavaScript变量可不声明直接使用。默认值:undefined
	3.变量的赋值:var 变量名 = 值; 是弱类型,即一个变量可存放不同类型的数据,只能 使用var(variable)定义变量。
 
  2).数据类型:
	基本数据类型:
		整型-------整数
		浮点-------小数
		字符串-----“ abc”/’abc’
		布尔--------true /false 和其他(与Java不同)
		Null---------空 ,一个占位符。值 undefined是从值 null 派生来的,因此 ECMAScript  把它们定义为相等的。
			  ---undefined声明变量未初始化时,变量默认值为undefined。
				alter(null==undefined):为TRUE,值相等但含义不同。
	引用数据类型: 引用类型通常叫做类(class),处理的是对象如(Windows)。
 		JavaScript是基于对象而不是面向对象。对象类型的默认值是null.
 		JavaScript提供众多预定义引用类型(内置对象)。
 
  3).运算符: 与Java基本一致
	算数运算符 
	赋值运算符 
	逻辑运算符
	比较运算符: 
		===:全等,值和类型都相等。   !==
		== : 忽略数据类型比较值	 !=
			var num1=”5”  var num2=5;
			window.alert(num1==num2)   true
			window.alert(num1===num2)  false
  4).流程控制;
	Java中if的条件必须是布尔值。而JS中多种  if语句内一定要有返回值的真假。
		Undefined   false			
		null   false
		Number(+0,-0或NaN)  false 余为true
		String 空串为    false
		Object(如果为对象)   true
	特殊值:NaN (not a number)
 
  5).方法的编写及调用		 Java中的方法method  js中的函数function
  
   回调函数:函数我们写的,但是调用时机不受我们控制
	Java 实现:
		Public static int getSum(int num,int num2){
			returen num1+num2; 
		}
	     调用:
		Int sum = getSum(1,2);
 
	JS 实现
		Function 函数名 (参数1,参数2){
			函数实现;
		}
		var demo=function(){}
	   调用
	  	规范调用:与Java一样 var sum = getSum(1,2)
		非规范调:只要方法名合法,参数列表可以不一样。不建议。 也可以直接写方法名不要“()”
	注意:JS不存在重载,如果方法名一样,那么后面的方法会覆盖掉前面的。
 
6.BOM对象:
	*Window——窗体
		alert——警告框
	        window.alert(“警告消息”)            alert(false||"abc")
		confirm——确认框——返回boolean值
							var flag = confirm(“确认删除?”);
	alert(“客户选择:”+flag);
		prompt——输入框——返回客户录入的文本
							var v = prompt(“请您输入数据:”);
	alert(“客户输入的是:”+v);
		innerHTML:向页面的某个元素中写内容,将原有的东西覆盖。
				<script>
					window.onload = function(){
						var t1 =document.getElementById("t1");
						t1.onmouseover = function(){
							t3.value = "鼠标移入t1"
						}
						t1.onmouseout = function(){
							t2.innerHTML = "鼠标移出了"
						}
					}
				</script>
				<body>
					<div id="t2"></div>
					<input type="text" id="t1" />	
					<input type="text" id="t3"/>
				</body>
 
	*location——单击事件,跳转到新的页面
			<script>
				function hehe(){
					location.href="../轮播图/轮播图.html";
				}
			</script>
			<input type="button" value="单击我" onclick="hehe()"/>
 
	*History——浏览器有前进和返回功能,但使用前提是有历史记录,并在history中。
		history.forward() = history.go(1)
		history.back() = history.go(-1)
		例:
		页面一:	<script>
					function end(){
						history.forward();
					}
				</script>
				<body>
					我是 start
					<a href="end.html">跳转到end</a>
					<input type="button" value="去end" onclick="end()"/>
				</body>
		页面二:	<script>
					function backto(){
						history.back();
					}
				</script>
				<body>
					我是end
					<input type="button" value="返回" onclick="backto()" />
				</body>
 
7.DOM 对象    Document object model 文档对象。代表整个HTML文档
				页面加载完实现:window.onload = function(){}
	1).获取DOM对象 
		A. JS 内置对象document,代表了文档
		B. 每一个标签(又称为元素)都可以看做是一个对象
		C. 获取一个具体的标签对象
			<div id=”d1”> hello word </div>
			<script>
			var d1 = document.getElementById(“id值”);  
			window.alert(d1);
			</script>  
		*将script放到head中取不到d1(null)
			原因:和页面加载顺序有关,从上向下加	
		*解决办法:
			1.将script代码存储在要获取的元素的下面
			2.body中 设置属性 οnlοad=“函数”当Body页面加载完后执行函数。JS在head中,编写函数实现。HTML中出现了JS代码。
			3.去除body的onload属性,在JS中添加代码window.onload = 函数名;函数名无括。   降低耦合性
			4.匿名方法
				<script>
				    window.onload = function(){
					var d1 = document.getElementById(“id值”);  
					window.alert(d1);
				    }
				</script>	
 
	2).获取标签对象
		方式一:var d = document.getElementById(“id”)   根据Id返回标签对象数组
		方式二:var ds = document.getElementsByTagName(“标签名”) 根据标签名返回多个对存入数组。
		方式三:var ds = document.getElementsByClassName(“类名”)据类名,返回多个对象到数组
	
	3).操作DOM对象
 
		元素操作:createElement、appendChild
			document.createElement(”标签名”) 创建元素节点。 
			document.createNodeText(”文本内容”) 创建文本节点。
			setAttribute(name,value); 给元素设置属性名和属性值
			ele.appendChild(子元素) 向标签体末尾添加新的子节点。
		   实例:
			在页面加载后,动态给页面的div表中动态添加一个元素,比如超链接等
			<!—HTML代码-->
			<div id="divId"></div>
			
			<script type="text/javascript">
 
				//1 获得div对象(元素--标签)
				var divObj = document.getElementById("divId");
 
				//2 创建a元素
				// * createElement 创建指定名称的元素
				var aObj = document.createElement("a");
 
				//2.1 创建文件
				var nodeObj = document.createTextNode("xxx");
				// * 将文本添加到a元素
				aObj.appendChild(nodeObj);
	
				//2.2 给a元素设置属性
				// setAttribute(name,value) 给指定的元素设置属性,name属性名,value属性值
				aObj.setAttribute("href","http://www.itheima.com");
	
				//3 将新创建的a元素,添加到div元素中
				// * appendChild 追加子元素
				divObj.appendChild(aObj);
 
			</script>
 
		获取内容体:  对象名.innerHTML
		获取属性 :   对象名.属性名
		操作属性 :   对象.内容体/属性名
 
			获取元素:
				var obj=document.getElementById("id值");
			获取元素的value属性
				var val=document.getElementById("id值").value;
			设置元素的value属性	
				document.getElementById("id值").value="sdfsdf";
			获取元素的标签体 
				var ht=document.getElementById("id值").innerHTML;
			设置元素的标签体
				document.getElementById("id值").innerHTML="ssss";
 
		  d1.innerHTML = “ hello 内容体 ”  d1.src = “../../img/image/4.jpg”
 
		注意:	
			1.属性操作时,class对应的是className,因为class是关键字,比较特殊
				获取:对象.className 
				设置:对象.className = “新值”
			2.获取CSS属性
				获取:对象名.style.属性
				设置:对象名.style.属性 = 值
			window.onload = function(){
				var d1 = document.getElementById(“d1”); 
				alert(d1.innerHTML); div的文本
				alert(d1.className); div的类名
				alert(d1.style.color) div的内嵌style
				var i1 = document.getElementById(“i1”);
				alert(1.src);
				alert(1.titel);
			}
			<div id = “d1” class = “test” style=”color:red;” > hello dom </div>
			<img src = “../../img/image/2.jpg” id = “i1” title = “谢霆锋”>
 
	3).事件:
    		*页面上的动作
	  		 客户对页面操作产生:单击按钮、焦点获得、焦点失去、鼠标移入移出、下拉列表选项选定、键盘按键事件。。。
		*浏览器的动作:页面加载。
			*添加事件的两种格式:
				方式1:标签中添加属性onxxx,xxx一般具有自我描述性 
				方式2:获得标签对象,window.onxxx = function(){}
 
	   事件:
		onload:某个页面或图像被完全加载
		onsubmit:提交按钮被点击,返回值为true时才提交    form标签中,属性οnsubmit=“return 函数()”
		onclick:鼠标点击某个对象    其余为 属性 
		ondblack:鼠标双击某个对象
		onblur  :元素失去焦点
		onfocus :元素获得焦点
		onchange:用户改变域的内容
		onkeydown:某个键盘的键被按下
		onkeypress:某个键盘的键被按下或按住
		onkeyup  :某个键盘的键被松开
		onmousedown:某个鼠标按键被按下
		onmouseup:某个鼠标键按键被松开
		onmouseover:鼠标被移到某元素上
		onmouseout:鼠标从某元素移开
		onmousemove:鼠标被移动
	
	4)事件案例
		1)获取按下的是哪个按键:
			var t1 = document.getElementById("t1");
			t1.onkeydown = function(event){
				t2.value = event.keyCode;
 			}
		2)单击按钮事件
			给按钮添加属性 οnclick=“函数()” 在js中写函数体  单击按钮执行函数体
			<script>
				function hehe(){
					alert("单击了按钮")
				}
			</script>
			<input type="button" value="单击我" onclick="hehe()"/>
		3)控制表单提交
			格式:  form标签中,属性οnsubmit=“return 函数()”
		    		Js中编写函数实现,如果函数返回true ,就正常提交,否则不提交。
	
			<script>
				function test(){
					alert("按钮被单击了") }
				window.onload = function(){
					var d2 = document.getElementById("d2");
					b2.onclick = function(){
						alert("按钮2被单击了") }
				}
			</script>
			<body>
				<input type="button" value="按钮" onclick="test()" />
				<input type="button" value="按钮2" id="d2"/>
 
		5)焦点事件:光标在页面中的位置,页面至多只有一个焦点
			 获得焦点事件:onfocus     
			 失去焦点事件:onblur
					1)给标签添加属性onblur/ onfocus = “函数名()”,编写函数的js实现
					2)页面加载完,获取按钮对象,再对象.onblur / onfocus = function(){} 
					<script>
						window .onload = function (){
							var t1 = document.getElementById("t1");
							t1.onfocus = function(){
								alert("t1获得焦点")
							}
						}
						function b(){
						alert("t2失去焦点")
					}
					</script>	
					<body>
						<input type="text" id="t1" />
						<input type="text" id="t2" onblur="b()" />
					</body>
9.this关键字
	与Java中一样,代表当前对象,谁调用这个函数代表谁。
	例:window.onload = function(){
				var t1 = document.getElementById("t1");
				t1.onfocus = function(){
					//alert(t1.value);   可实现,但不推荐。可能因作用域导致错误
					alert(this.value);
				}
			}
		<input type="text" id="t1" value="hh" />
10. JS正则匹配
	编写正则:以/^ 开头 以$/结束 中间存储正则表达式 + *
	校验:
		* 数据.match(正则)
		* 正则.test(数据)
			var regist =/^ +$/;
			if(zhanghao.value.match(regist)){
					alert("账号不能为空格");
					return false; //此项必须有
				}
			if(regist.test(zhanghao.value)){
					alert("账号不能为空格");
					return false; //此项必须有
				}
 
13. JS数组     索引可以是任意值
	一维数组:
		创建:
			var arr = new Array()
			var arr = new Array(length) 未赋、越界值为undefined
			var arr = new Array(“a’,”b’)
			var arr = [“a”,”b”]
		使用:数组名[索引] = 值
		属性:length 亦可为 size() 获得长度
		注意:JS未初始化默认值undefined
		  	Js 不存在越界
		  	容量可变,像ArrayList
		  	数组内元素类型任意
	二维数组: 常用于联动中、
		var outbox = new Array();
		outbox[0] = new Array(“a”,”b”,”c”);
		outbox[1] = new Array(“A”,”B”,”C”,”D”);
		alert(outbox[1].length);
	步骤分析:
	 	 1 确认事件 onchange
		 2 事件触发函数,要编写自己的函数
		 3 创建2维数组
		 4 在函数内获取选中的省份
		 5 拿选中的省份和数组对比
		 6 创建option元素,创建城市文本,将城市添加到option  <option>海淀区<option>
		 7 获得第二个下拉列表,然后将option放进来
 
	代码实现:
	 <script>
		 var citys=new Array(4);
		 citys[0]=new Array("昌平区","海淀区","朝阳区","东城区","西城区");
		 citys[1]=new Array("郑州市","洛阳市","开封市","安阳市","信阳市");
		 citys[2]=new Array("石家庄市","邯郸市","邢台市","保定市","张家口市");
		 citys[3]=new Array("济南市","青岛市","烟台市","潍坊市","德州市");
		function city(obj){
			//获取到选择的省份
			//获取第二个下拉列表
			var rightSel=document.getElementById("rightSel");
			 rightSel.options.length=0;
			//				alert(obj.value);
			//对二维数组循环遍历
			for(var i=0;i<citys.length;i++){
				//和数组做值得对比
				if(obj.value==i){
					for(var j=0;j<citys[i].length;j++){
//						alert(citys[i][j]);
						//创建option标签元素
						var option=document.createElement("option"); //<option></option>
						//创建城市文本
						var texts=document.createTextNode(citys[i][j]);
						//将城市文本添加到option里面
						option.appendChild(texts);
						//将option追加到第二个下拉列表
						rightSel.appendChild(option);
				}
			}
		}
	    }
	</script>
 
11.计时器
	创建:window.setInterval(参数1,参数2)
		  参数1:函数
		  参数2:时间间隔(毫秒为单位)
 
	方式1:函数名 , 	setInterval(show , 100);
	方式2:函数字符串,	setInterval("show()" , 100);
 
	效果:隔参数2毫秒后,执行一次参数1,循环执行
	底层:实际是开了一个新线程,循环执行参数1。
	销毁计时器:
		1.创建计时器时,返回一个该计时器id,唯一标记
		2.window也提供了销毁计时器的实现
		3.根据id销毁
		window.clearInterval(id值);
		    例<script>
				window.onload = function(){  //当页面加载完之后执行函数
					var count = 1;
					window.setInterval(function(){ 设置定时器  或者setInterval(var lb = document.getElementById("lunbotu");
						count++;
						if(count==4){
							count=1;
						}
						lb.src = "../../day01/img/img/"+count+".jpg";
						},3000
					)
				}
			</script>
12.一次性定时器
	创建:window.setTimeout(参数1,参数2);
		  参数1:函数
		  参数2:时间间隔(毫秒为单位)
	效果:隔参数2毫秒后,执行参数1,执行完计时器结束。 
	底层:实际开了一个新线程,(不可此函数下句就为清除语句)休眠后执行一次参数1。
	销毁计时器:
		1.创建计时器时,返回一个该计时器id,唯一标记
		2.window也提供了销毁计时器的实现
		3.根据id销毁
		window.clearTimeout( id值);
		  例:<script>
			/*
			 * 思路:
			 * 页面加载完之后,创建一个一次性定时器,函数A。
			 * 函数A实现获取广告div,设置style中的display属性为block。
			 * 在创建一个一次性定时器,函数B。函数B将div的display设置为none
			 */
				window.onload = function(){
					window.setTimeout(
						function(){
							var gg = document.getElementById("gg");
							gg.style.display = "block";
							window.setTimeout(function(){
								var gg= document.getElementById("gg");
								gg.style.display = "none";
							},3000);
						},2000);
				}
			</script>
14.全局函数常见操作:
	1.字符串——数字   
	  *window.parseInt() 解析整数
	  *window.parseFloat()  解析小数
		与Java不同,不必纯数字。123px:尾部特殊字符自动忽略,px 123首部为特殊字符解析不出,12px3中间特殊符号,只解析特殊符号之前的数值。能解析的解析后,		直接使用数值。
	2.eval函数 
	  *应用场景
		  编一个页面,页面要产生动态特效,暴露一个接口让别人写js代码,提交的js代 码是字符串,使用eval函数解析字符串,变成可执行的js代码。
	  *window.eval(“var num = 1”) ; 等价于直接使用var num = 1
		alert(num);
	3.全局函数之编码解码
		转换后数字之间用“%”隔开起标记作用
	   *window.encodeURI(待转路径url)  客户端实现 中文到数字
       *window.decodeURI(url)  服务器端实现 编码到中文
 
15.表格隔行变色案例
	思路:获取所有的行的对象——遍历行,索引奇数设为红色,偶数背景为绿色——遍历过程中,每行添加鼠标移入事件
	知识点:
		1.如何获取到多个标签对象
		2.怎么设置背景色
			设置当前行的classname,关联上面的CSS代码,设背景色
		3.鼠标事件
		<style>  选择使用类选择器原因:类名可以相同,而id名一般不同。
			.jishu{ 
				background-color: aquamarine;
			}
			.oushu{
				background-color: blanchedalmond;
			}
			.yiru{
				background-color: yellow;
			}
		</style>
		<script>
			window.onload = function(){
				var trs = document.getElementsByTagName("tr");
				var color
				for(var i =1;i<trs.length;i++){ 
					if(i % 2==0){
						trs[i].className = "oushu";
					}else{
						trs[i].className = "jishu";
					}
					trs[i].onmouseover = function(){
						color = this.className;
						this.className = "yiru"; //必须用this,function超出了i的作用域
					}
					trs[i].onmouseout = function(){
						this.className = color;
					}
				}
				
			}
		</script>
16.复选框全选、全不选和反选
	<script>
		window.onload = function(){
			var all = document.getElementById("all");
			var none = document.getElementById("none");
			var change = document.getElementById("change");
			all.onclick = function(){
				var cs = document.getElementsByClassName("itemSelect");
				for(var i =0;i<cs.length;i++){
					cs[i].checked = true;
				}
			}
			none.onclick = function(){
				var cs = document.getElementsByClassName("itemSelect");
				for(var i =0;i<cs.length;i++){
					cs[i].checked = false;
				}
			}
			change.onclick = function(){
				var cs = document.getElementsByClassName("itemSelect");
				for(var i =0;i<cs.length;i++){
					cs[i].checked = !cs[i].checked;
				}
			}
		} 
	</script>
	根据自身取反:cs[i].checked = !cs[i].checked;
17.多级联动
		window.onload = function(){
				var province = document.getElementById("province");
				province.onchange = function(){
					var value = this.value;
					var cs = cities[value];
					var s2 = document.getElementById("city");
					s2.innerHTML = "<option>请选择城市</option>";
					for(var i = 0;i<cs.length;i++){
						s2.innerHTML +="<option>"+cs[i]+"</option>"
					}
				}
			}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
**计算机专业毕设:基于ASP.NET的电子邮件简单收发系统设计与实现(源代码+论文)** 本资源提供了一个完整的基于ASP.NET的电子邮件收发系统的设计与实现方案。该系统采用C#语言编写,支持多种邮件协议,并提供了用户友好的界面和操作方式。通过本系统,用户可以轻松地发送、接收和管理电子邮件,同时系统还具备一定的定制性和二次开发潜力。 **主要功能特点:** 1. **用户注册与登录**:用户可以通过注册账号或使用第三方账号(如QQ、微博等)进行登录。 2. **邮件发送与接收**:支持SMTP和POP3/IMAP等多种邮件协议,用户可以发送和接收文本、附件等多种格式的邮件。 3. **邮件管理**:用户可以对收件箱、发件箱、草稿箱等进行管理,包括查看、删除、移动等操作。 4. **通讯录管理**:用户可以添加、编辑和删除联系人信息,方便在发送邮件时快速选择收件人。 5. **个性化设置**:用户可以根据自己的喜好设置邮件提醒方式、界面风格等。 6. **二次开发定制**:系统采用模块化设计,方便开发者进行二次开发和定制,满足特定需求。 **技术实现:** 1. **前端**:使用HTMLCSSJavaScript等技术构建用户界面,提供响应式布局以适应不同屏幕尺寸的设备。 2. **后端**:采用ASP.NET框架和C#语言编写服务器端代码,实现邮件的发送、接收和管理等功能。 3. **数据库**:使用SQL Server或MySQL等关系型数据库存储用户信息和邮件数据。 4. **安全性**:系统采用了多种安全措施,如HTTPS加密通信、用户密码加密存储等,确保用户数据的安全。 本资源不仅适合计算机专业的学生作为毕业设计参考,也适合广大邮件收发系统的开发者和爱好者学习和借鉴。
传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3.符号实体 url说明 超链接 发送电邮 8-11 4.图像 表格 实际应用-菜谱 课堂练习-课程表 8-11 5.无序列表 有序列表 框架 8-12 1.浮动窗口 表单及表单控件① 8-12 2.表单及表单控件② 8-12 3.多媒体页面 标签汇总① 地图映射1 8-12 4.多媒体页面 标签汇总① 地图映射2 8-12 5.多媒体页面 标签汇总① 地图映射3 8-12 6.多标签汇总② 线包字效果 测试题 8-13 1.div+css开山篇 8-13 2.初识css 类选择器 id选择器 html选择器 8-13 3.通配符选择器 父子选择器 8-13 4.选择器使用细节 块元素?托心谠? 盒子模型 盒子模型经典应用① 8-13 5.盒子模型经典应用② 作业布置 8-15 1.div+css作业评讲① 8-15 2.div+css作业评讲② 8-15 3.div+css作业评讲③ 8-15 4.浮动 8-15 5.网站推荐 定位 8-15 6.仿sohu首页面布局 可爱屋首页面 8-16 1.动态网页技术介绍 php基本介绍 8-16 2.php快速入门 bs和cs介绍 8-16 3.web服务器介绍 apache服务器安装 8-16 4.apache服务器使用及配置① 启动和停止 端口配置 8-16 5.apache服务器使用及配置② apache目录结构 8-16 6.apache服务器使用及配置③ apache虚拟目录 8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的搭建和使用② 自定义安装 8-17 5.php开发环境的搭建和使用③ 安装并配置discuz论坛 8-19 1.解答学生问题--一个ip绑定多个域名 8-19 2.php运行过程时序图 php书写规范 8-19 3.php基本语法介绍 php数据类型介绍 8-19 4.整型细节说明 8-19 5.布尔细节 浮点数细节 字符串细节 算术运算符① 8-19 6.算术运算符② 比较运算符 逻辑运算符 8-20 1.三元运算符 类型运算符 运算符优先级 8-20 2.顺序控制 分支控制(if ifelse switch) 程序流程图 8-20 3.循环控制①(for) 8-20 4.循环控制②(while dowhile) 打印金字塔案例 8-20 5.打印金字塔案例评讲 布置练习题 8-22 1.break语句 continue语句 常量 8-22 2.函数基本概念 函数快速入门 8-22 3.函数使用函数调用初步理解 8-22 4.函数调用深入理解 函数使用注意事项① 8-22 5.函数使用注意事项② 函数作业布 8-23 1.函数再回顾 自定义函数 8-23 2.位运算① 8-23 3.位运算② 8-23 4.数组介绍 数组的创建 ?榈谋槔? 8-23 5.数组的引用 数组使用细节① 8-23 6.数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组作业评讲③ 8-24 7.类与对象的基本概念 8-26 1.成员属性 如何创建对象 8-26 2.对象在内存中存在形式 函数传递对象方式 8-26 3.函数传递基本数据类型和数组方式 成员方法① 8-26 4.成员方法② 8-26 5.作业评讲 8-27 mysql1 8-27 mysql2 8-28 1.mysql 8-28 2.mysql 8-28 3.mysql 8-28 4.mysql 8-28 5.mysql 8-28 6.mysql 8-30 1.mysql 8-30 2.mysql 8-30 3.mysql 8-30 4.mysql 8-30 5.mysql 8-31 1 8-31 2.外键、索引 8-31 3.事务处理 8-31 4 8-31 5 8-31 6 9-10 1.回顾 9-10 2.错误和异常处理介绍 处理错误方式①-die 9-10 3.处理错误方式②-错误处理器 错误级别 处理错误方式③-错误触发器 9-10 4.php错误日志 9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-http响应详解(禁用缓存设置) 9-13 3.http协议深度剖析④-http响应详解(文件下载) 9-13 4.http协议深度剖析⑤-http响应详解(作业评讲) 9-13 5.php数据库编程①-使用mysql扩展库 9-13 6.php数据库编程②-使用mysql扩展库 9-13 7.php数据库编程③-使用mysql扩展库 9-14 1.回顾 9-14 2.php数据库编程④-使用mysql扩展库(在线词典案例) 9-14 3.php数据库编程⑤-使用mysql扩展库(在线词典案例) 9-14 4.php数据库编程⑥-使用mysqli扩展库 9-14 5.php数据库编程⑦-使用mysqli扩展库 9-14 6.php数据库编程⑧-使用mysqli扩展库(布置练习) 9-14 7.php数据库编程⑨-使用mysqli扩展库增强(批量执行sql和事务控制) 9-17 1.回顾 9-17 2.php数据库编程(10)-使用mysqli扩展库增强(预处理技术) 9-17 3.php数据库编程(11)-使用mysqli扩展库增强(预处理技术) 9-17 4.预定义超全局数组①-原理分析 $_GET 9-17 5.预定义超全局数组②-$_POST $_REQUEST 9-17 6.预定义超全局数组③-$_SERVER $_ENV $GLOBALS 9-17 7.zend studio使用 项目开发五个阶段 雇员管理系统① 9-19 1.回顾 9-19 2.雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层模式雇员分页 9-20 3.雇员管理系统⑦-分层模式整体翻页 9-20 4.雇员管理系统⑧-分层模式通用分页模块 9-20 5.雇员管理系统⑨-mvc模式介绍 9-21 1.回顾 9-21 2.mvc模式①-用mvc模式改进网站结构 9-21 3.mvc模式②-用mvc模式改进网站结构 9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2.session①-session原理介绍 保存session 9-23 3.session②-获取session 更新session 删除session session细节和原理深入讨 9-23 4.session③-购物车 cookie禁用后如何使用session session防用户非法登录 9-23 5.session④-验证码防恶意攻击 9-23 6.session⑤-session配置 session的gc机制 自定义session处理器 9-24 0.回顾 9-24 1.回顾2 9-24 2.php文件编程①-文件操作原理 如何获取文件信息 如何读文件 9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的输出 9-27 3 循环控制 js的调试方法 9-27 4 函的数定义分类及使用 9-27 5 函数的调用 递归及深入使用 9-27 6 一维?榧笆樵谀诖嬷械拇嬖谛问? 9-27 7 常用数组的属性及使用方法 9-28 1课程回顾 9-28 2 二维数组的定义使用 数组排序 9-28 3 顺序查找 二分查找 9-28 4 javascript面向对象编程 9-28 5 javascript对象存在形式 9-28 6 javascript类与对象 9-28 7 给对象指定成员函数 自定义工厂方法 9-30 1 课程回顾 9-30 2 javascript的闭包 js变量作用域 9-30 3 仿超级玛丽兄弟游戏制作 9-30 4 构造方法 对象的常用操作 9-30 5 面向对象的封装 继承 多态 9-30 6 面向对象的封装 继承 多态2 9-5 1.php xml编程①-xml基本介绍 xml元素 xml属性 9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 编?绦Q閤ml 9-5 3.php xml编程③-内部dtd 外边dtd dtd元素 dtd修饰符 9-5 4.php xml编程④-dtd属性 引用实体 参数实体 ide开发xml 9-5 5.php xml编程⑤-复杂的dtd综合练习 9-5 6.php xml编程⑥-dom基本概念 phpdom编程(1) 9-6 1.回顾 9-6 2.php xml编程⑦-phpdom编程(2) 9-6 3.php xml编程⑧-phpdom编程(3) 综合练习-基于xml的在线词典 9-6 4.php xml编程⑨-综合练习-基于xml的在线词典 phpdom使用xpath 9-6 5.php xml编程(10)-SimpleXML 9-7 1.回顾 9-7 2.析构方法 9-7 3.static关键字(静态变量) 9-7 4.static关键字(静态方法) 面向对象编程三大特性① 9-7 5.面向对象编程三大特性② 9-7 6.面向对象编程三大特性③ 9-9 1.回顾 9-9 2.面向对象编程三大特性④ 9-9 3.面向对象编程三大特性⑤ 抽象类 9-9 4.接口 9-9 5.继承与实现比较 final const 9-9 6.面向对象编程综合练习 10-10 1 课程回顾 10-10 2 正则表达式 10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7 zf controller讲解 10-16 1 model讲解 controller view调用 10-16 2 投票系统讲解1 10-16 3 投票系统讲解2 10-16 4 投票系统讲解3 10-16 5 投票系统讲解4 10-18 1 模板技术讲解 10-18 2 smarty常用功能 10-18 3 smarty常用功能 10-18 4 smarty功能讲解 10-18 5 smarty流程控制 10-18 6 10-18 7 smarty include使用 10-19 1 smarty实例 注册 10-19 2 smarty实例 注册2 10-19 3 smarty实例 注册3 10-19 4 smarty 字符串 自定义插件 缓存 10-19 5 smarty 字符串 自定义插件 缓存 10-19 6 smarty实例应?? 10-19 7 smarty实例应用2 10-19 8 smarty实例应用3 10-20 1 smarty应用 更换网站皮肤 10-20 2 smarty应用 更换网站皮肤2 10-20 3 smarty应用 更换网站皮肤3 10-20 4 smarty应用 更换网站皮肤4 10-20 5 smarty二级联动 10-20 6 smarty完成静态化 10-20 7 10-20 8 smarty分页技术 10-20 9 10-22 1 ajax介绍 无刷新验证用户名 10-22 2 ajax如何处理xml格式返回数据 10-22 3 json 10-22 4 ajax如何处理json格式返回数据 10-22 5 ajax应用 省市联动 10-22 6 ajax应用 黄金市场报价 10-23 1 简易在线聊天室1 10-23 2 简易在线聊天室2 10-23 3 简易在线聊天室3 10-23 4 简易在线聊天室4 10-23 5 简易在线聊天室5 10-23 6 简易在线聊天室6 10-25 1 jquery框架 jquery对象与dom对象区别及混合使用 10-25 2 jquery id选择器 层次选择器 10-25 3 jquery过滤选择器及练习题讲解 10-25 4 内容过滤器 可见度过滤器及练习讲解 10-26 1 课程回顾 10-26 2 属性过滤选择器 10-26 3 子元素选择器 表单对象属性选择器 10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 svn常用操作 实例讲解3 10-29 5 svn常用操作 实例讲解4 10-30 1 linux简介 10-30 2 虚拟机安装 linux安装 10-30 3 常用命令 远程控制软件使用 10-30 4 vi编辑器使用 linux目录讲解 10-4 1 课程回顾 10-4 2 js面向对象多态 10-4 3 js内部对象和系统函数 10-4 5 js内部类 string array 10-4 6 js对象数组 常用系统函数 10-4 7 js事件 事件驱动机制 10-4 8 10-5 1 课程回顾 10-5 2 js dom编程 10-5 3 dom编程实例 乌龟抓鸡 10-5 4 dom编程实例 乌龟抓鸡2 10-5 5 dom层次关系 dom对象 10-5 6 dom实例讲解 小人行走 10-7 1 课程回顾 10-7 2 dom对象详解 10-7 3 dom对象详解2 10-7 4 document对象 10-7 5 乌龟抓鸡游戏加强版 10-7 6 常用dom对象node节点属性讲解 10-7 7 坦克大战初步讲解 10-8 1 课程回顾 乌龟抓鸡游戏bug修复 10-8 2 style对象 10-8 3 style对象实例讲解 10-8 4 form forms对象 img对象 link对象 table对象 10-8 5 table实例讲解 10-8 6 正则表达式 11-1 1 常用命令讲解 用户管理 运行级别 11-1 2 常用开发命令讲解2 11-1 3 常用开发命令讲解3 11-1 4 文件所在组 所有组 其它组讲解 11-2 lamp安装(php和apache的整合)2011-11-2-3 11-2 lamp安装之-mysql的安装和配置(2011-11-2-2) 11-2 rpm命令+samba安装(2011-11-2-5) 11-2 在linux下安装phpmyadmin软(2011-11-2-4) 11-5-1(上次课回顾) 11-5-2(页面静态化介绍) 11-5-3新闻管理系统(页面真静态) 11-5-4(真静态) 11-5-5(伪静态) 11-6 1(memcache原理介绍) 11-6 2-1(memcache的telnet操作,安装和基本使用) 11-6 2-2(memcach3的php的操作) 11-6 4(mysql数据库优化1) 11-6 5(mysql数据库优化 11-6 6(mysql数据库优化 11-8 商务网站项目1_1 11-8 商务网站项目1_2 11-8 商务网站项目1_3 11-9 商务网站项目2_1 11-9 商务网站项目2_2 11-9 商务网站项目2_3 11-9 商务网站项目2_4-单例模式 11-9 商务网站项目2_5 11-10 商务网站项目3_1 11-10 商务网站项目3_2 11-10 商务网站项目3_3 11-12 商务网站项目4_1 11-12 商务网站项目4_2 11-12 商务网站项目4_3-订单提交 11-13 商务网站项目4_4(没声音) 11-13 商务网站项目4_5 11-13 商务网站项目4_6 11-15 商务网站项目5_ec二次开发 11-17 yii_store项目1 11-19 yii框架_store项目 11-19 yii框架_store项目 11-19 yii框架_store项目 11-19 yii框架_store项目 11-19 yii框架_store项目 11-20-yii框架_store项目 11-20-yii_store项目 11-20-yii_store项目 11-20-yii_store项目 11-20-yii_store项目 11-22 yii_store项目 11-22 yii_store项目 11-23 yii_store项目 11-23 yii_store项目 11-24 yii_store项目 11-24 yii_store项目 11-24 yii_store项目 11-25 yii_store项目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值