1. 完成页面定时弹出广告
1.1 需求分析
在我们打开网站的时候,过了3秒钟,弹出了一个广告,这个广告显示了3秒钟,消失了
1.2 技术分析
window对象是浏览器最顶层的对象 我们可以直接在我们的页面使用它里面的方法和属性
- 涉及到的事件 onload
- 过了3秒钟之后,做一件事 setTimeout()
- 弹出广告, 控制元素的显示和隐藏
【JS的定时操作】
setInterval() | 按照指定的周期(以毫秒计)来调用函数或计算表达式。 |
---|---|
setTimeout() | 在指定的毫秒数后调用函数或计算表达式。 |
clearInterval() | 取消由 setInterval() 设置的 timeout。 |
---|---|
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout。 |
【HTML中的显示与隐藏】
css属性: display
显示: block
隐藏: none;
1.3 步骤分析
- 确定事件 onload
- 事件通常都会触发一个函数
- 启动定时器,3秒之后显示广告
- 首先都获取广告所在的img
- 修改它的属性值 style.display=”block”
取消定时器
clearInterval() | 取消由 setInterval() 设置的 timeout。 |
---|---|
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout。 |
1.4 代码实现
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--script标签-->
<script>
var id_Interval;
function showAd(){
//获取要操作的元素
var ad = document.getElementById("ad"); //<img>
//是不是要操作元素里面的显示
// alert(ad.style);
ad.style.display="block";
console.log("显示方法被调用了...")
// setTimeout("hideAd()",3000);
/************************************************************************/
//这里需要想办法取消定时器
clearInterval(id_Interval);
//让广告显示3秒钟之后再去执行
setTimeout("hideAd()",3000);
}
function hideAd(){
var ad = document.getElementById("ad"); //<img>
//是不是要操作元素里面的显示
// alert(ad.style);
ad.style.display="none";
}
window.onload = function(){
//三秒之后显示广告
// setTimeout("showAd()",3000);
//setTimeout(showAd,3000); //传入的是方法的应用
// setTimeout(showAd(),30000); // 这个调用有问题
id_Interval = setInterval("showAd()",3000); //启动了一个定时器
}
</script>
</head>
<body>
<img id="ad" style="display: none; width: 100%;" src="../products/f001a62f-a49d-4a4d-b56f-2b6908a0002c_g.jpg" />
</body>
</html>
BOM: 浏览器对象模型
window : 浏览器最顶层的对象,它的方法和属性可以直接拿来使用
setInterval
setTimeout
clearInterval
clearTimeout
navigator: 获取浏览器的一些信息
history: 操作的历史记录
location: 浏览器地址栏
screen; 屏幕
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
alert(window.screenLeft );
var flag = window.confirm("您确定要退出我们的网站吗?");
// alert(flag);
// window.prompt("ni hao:")
//浏览信息
/* alert(navigator.appCodeName);
alert(navigator.appName);
//screen
alert(screen.width);
alert(screen.height);*/
function goto(){
location.href="http://www.baidu.com";
}
</script>
</head>
<body>
<input type="button" onclick="goto()" value="跳转去百度"/>
</body>
</html>
2. 完成完成表单的校验
2.1 需求分析
当用户输入的时候,我们需要对用户输入的内容进行表单的验证,这样可以减轻对服务器的压力
2.2 技术分析
【HTML中innerHTML属性】
通过查找手册,发现Element元素有一个innnerHTML属性,这个属性可以填写一段html代码
innerHTML = "<font color='red'>这是一段测试的文本内容</font>"
【JS中的常用事件】
onfocus() : 获取到焦点
onblur(): 失去焦点
onkeyup(): 当用户输入完成之后,按键弹起触发的事件.
2.3 步骤分析
确认事件 onsubmit 并且注意οnsubmit=”return checkForm()”
实现checkForm这个方法
- 对用户名做非空判断,
- 对用户名进行输入长度判断
- 输入的密码长度不能少于8位
- 两次输入的密码必须一样
- 邮箱格式需要正确sdfasdf@qq.com
当用户输入有问题的时候, 需要在后面给出友好提示
修改span的内容 使用innerHTML
2.4 代码实现
<script>
/*
1. 确认事件 onsubmit 并且注意onsubmit="return checkForm()"
2. 实现checkForm这个方法
1. 对用户名做非空判断,
2. 对用户名进行输入长度判断
3. 输入的密码长度不能少于8位
4. 两次输入的密码必须一样
5. 邮箱格式需要正确sdfasdf@qq.com.cn
3. 当用户输入有问题的时候, 需要在后面给出友好提示
1. 修改span的内容 使用innerHTML
*/
function showTips(){
var span = document.getElementById("spanId");
span.innerHTML = "<font color='red'>用户名不能为空,长度须大于6</font>"
}
function checkUsername(){
//1. 对用户名做非空判断,
//先得获取用户输入
var username = document.getElementById("username");
//alert(username.value);
var uValue = username.value;
//类型的转换
// var i = 123;
// alert(i.toString());
// var j = "hello world";
// var m = j.substring(0,6);
// alert(m);
//对用户名进行输入长度判断
if(uValue == "" || uValue.length < 6){
//在后面的span中填入给用户温馨提示
/*
1.首先获取span
2. 修改span的innerHTML属性
*/
var span = document.getElementById("spanId");
span.innerHTML = "<font color='red'>用户名不合法</font>"
return false;
}else{
var span = document.getElementById("spanId");
span.innerHTML = "<font color='red'>恭喜您,合法</font>"
}
}
function checkForm(){
//1. 对用户名做非空判断,
//先得获取用户输入
var username = document.getElementById("username");
//alert(username.value);
var uValue = username.value;
//类型的转换
// var i = 123;
// alert(i.toString());
// var j = "hello world";
// var m = j.substring(0,6);
// alert(m);
//对用户名进行输入长度判断
if(uValue == "" || uValue.length < 6){
//在后面的span中填入给用户温馨提示
/*
1.首先获取span
2. 修改span的innerHTML属性
*/
var span = document.getElementById("spanId");
span.innerHTML = "<font color='red'>用户名不合法</font>"
return false;
}
/*
输入的密码长度不能少于8位
先获取到密码框输入的内容
判断它的长度是否小于8
4. 两次输入的密码必须一样
获取重复密码框的内容
* */
var pValue = document.getElementById("password").value;
var rePValue = document.getElementById("repassword").value;
if(pValue.length < 8){
var span = document.getElementById("password_spanId");
span.innerHTML = "<font color='red'>密码长度不够8位</font>"
return false;
}else{
var span = document.getElementById("password_spanId");
span.innerHTML="";
}
if(pValue != rePValue){
var span = document.getElementById("repassword_spanId");
span.innerHTML = "<font color='red'>两次输入密码不一致</font>"
return false;
}else{
var span = document.getElementById("repassword_spanId");
span.innerHTML = ""
}
//邮箱校验 正则表达式
var email = document.getElementById("email").value;
//正则表达式
/*var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
if(! reg.test(email)){
alert("邮箱表达式有问题")
return false;
}*/
if(!checkEmail(email)){
return false;
}
return true;
}
</script>
3. 表格隔行换色
3.1 需求分析
3.2 技术分析
- 如何来获取表格中所有的行
- 如何来修改表格中的颜色
3.3 步骤分析
3.4 代码实现
<script>
/*
1. 确定事件,文档加载onload
2. 事件要触发函数
获取到表格
获取到所有的行
然后对奇数行改变 red
对偶数行改变成黄色
*/
window.onload = function(){
var table1 = document.getElementById("table1");
// var rows = table1.rows;
//
var rows = table1.tBodies[0].rows
//alert(rows);
for(var i = 0 ; i< rows.length; i++){
var row = rows[i];
if(i%2 == 0){
row.style.backgroundColor = "yellow";
}else{
row.style.backgroundColor = "red";
}
}
}
</script>
4. 复选框的全选和全不选
4.1 需求分析
4.2 技术分析
【HTML中checked属性】
找到checkbox中的checked中的属性
4.3 步骤分析
/*
1.确定事件:onclick
2.实现函数也声明
获得checkbox
获取当前点击之后的状态checked 还是非
*/
function selectAll(){
var ckall = document.getElementById("ckall")
// alert(ckall.checked);
var checkedFlag = ckall.checked;
var ckones = document.getElementsByName("ckone");
for (var i=0; i<ckones.length; i++) {
var ckone = ckones[i];
ckone.checked = checkedFlag;
}
}
5. 省市联动效果
5.1 需求分析
5.2 技术分析
【HTML中的DOM操作】
CRUD,增删改查
DOM: Document Object Model 文档对象模型
getElementById() | 返回带有指定 ID 的元素。 |
---|---|
getElementsByTagName() | 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。 |
getElementsByClassName() | 返回包含带有指定类名的所有元素的节点列表。 |
appendChild() | 把新的子节点添加到指定节点。 |
removeChild() | 删除子节点。 |
replaceChild() | 替换子节点。 |
insertBefore() | 在指定的子节点前面插入新的子节点。 |
createAttribute() | 创建属性节点。 |
createElement() | 创建元素节点。 |
createTextNode() | 创建文本节点。 |
getAttribute() | 返回指定的属性值。 |
setAttribute() | 把指定属性设置或修改为指定的值。 |
【JS中的数组对象】
var cities = new Array(4);
cities[0] = new Array("深圳市","东莞市","广州市","佛山市"); //广东省
cities[1] = new Array("哈尔滨","齐齐哈尔市","漠河"); //黑龙江
cities[2] = new Array("黄石市","黄冈市","武汉市","孝感市"); //湖北省
cities[3] = new Array("拉萨市","阿里地区","八一","塔尔村"); //西藏
5.3 步骤分析
5.4 代码实现
<script>
/*
先准备数据
* */
var cities = new Array(4);
cities[0] = new Array("深圳市","东莞市","广州市","佛山市"); //广东省
cities[1] = new Array("哈尔滨","齐齐哈尔市","漠河"); //黑龙江
cities[2] = new Array("黄石市","黄冈市","武汉市","孝感市"); //湖北省
cities[3] = new Array("拉萨市","阿里地区","八一","塔尔村"); //西藏
/*
首先还是确认事件onchange
事件对应所要触发的方法 changeProvince()
*/
function changeProvince(){
//得到要操作的select
var selectProvince = document.getElementById("selectProvince");
//判断它当前被选中的值
var index = selectProvince.value;
//从数组中去找到对应的城市数组
var selectCities = cities[index];
//找到放置城市信息的select
var selectCity = document.getElementById("selectCity");
//清空select中的option
selectCity.options.length = 0;
//遍历是城市信息数组
for(var i = 0 ; i<selectCities.length; i++){
var citiName = selectCities[i];
//alert(citiName);//
//创建子节点
var option1 = document.createElement("option");//<option></option>
//创建文本节点
var textNode = document.createTextNode(citiName);
//将文本节点添加到option中
option1.appendChild(textNode); // <option>东莞市</option>
//将封装好的option添加到selectCity中
selectCity.appendChild(option1);
}
}
</script>
6. 使用JS控制下拉列表左右选择
6.1 需求分析:
6.2 步骤分析:
6.3 代码实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
/*
1.确认事件 onclick
2.事件要触发函数: selectOne
获取选中的商品
将选中的商品添加到左边
*/
function selectOne(){
//获取选中的商品
//首先要找到select
var selectRight = document.getElementById("selectRight");
//找到左边的select
var selectLeft = document.getElementById("selectLeft");
//得到所有的options
var options = selectRight.options;
for (var i = options.length - 1; i >= 0; i--) {
var oneOption = options[i];
//找到被选中的项
if(oneOption.selected){
//alert(oneOption.value);
//将这个选中的option添加到左边
selectLeft.appendChild(oneOption);
// break;
}
}
}
function selectAll(){
//获取选中的商品
//首先要找到select
var selectRight = document.getElementById("selectRight");
//找到左边的select
var selectLeft = document.getElementById("selectLeft");
//得到所有的options
var options = selectRight.options;
for (var i = 0; i < options.length; i++) {
var oneOption = options[i];
//找到被选中的项
// if(oneOption.selected){
//alert(oneOption.value);
//将这个选中的option添加到左边
selectLeft.appendChild(oneOption);
// break;
i--;
// }
}
}
</script>
</head>
<body>
<table width="450px" border="1px">
<tr>
<td>分类名称:</td>
<td>
<input type="text" value="手机数码" />
</td>
</tr>
<tr>
<td>分类描述:</td>
<td>
<input type="text" value="这里头满满的都是肾" />
</td>
</tr>
<tr>
<td>分类商品:</td>
<td>
<span style="float: left;">
已有商品:<br />
<select multiple="multiple" id="selectLeft">
<option>肾6</option>
<option>肾7</option>
<option>肾8</option>
<option>锤子</option>
</select>
<br />
<a href="#">>></a><br />
<a href="#">>>></a>
</span>
<span style="float: right;border: 1px solid red;" >
未有商品:<br />
<select multiple="multiple" id="selectRight" ondblclick="selectOne()">
<option>三星note7</option>
<option>小米Mix</option>
<option>华为meta9</option>
<option>波导手机</option>
</select>
<br />
<a href="#" onclick="selectOne()"><<</a><br />
<a href="#" onclick="selectAll()"><<<</a>
</span>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交" />
</td>
</tr>
</table>
</body>
</html>