JavaScript小练习2-网页换肤
题目
分析
三个皮肤切换按钮的选择
- 用li即可。
点击显示白点
- li中嵌套一个li,onclick时改变子元素li的css
onload
当页面加载完成后立即执行一段JavaScript代码。
onload 属性在对象已加载时触发。
onload 常用在"body"中,一旦完全加载所有内容(包括图像、脚本文件、CSS 文件等),就执行一段脚本。
在 HTML 中:
<body onload="SomeJavaScriptCode">
在 JavaScript 中:
window.onload=function(){SomeJavaScriptCode};
总结
在怎么显示三个并排的换肤按钮和点击显示白点这两块纠结很久,一方面想要更优雅的实现不想用嵌套div,一方面又想学习小练习1中的循环遍历思想,所以花了很久时间。其实思路很清晰,自己能力还是需要大大加强,多练习。
疑问
这里的onload不是很明白,代码中去掉onload显示是正常的,不知道这里的onload是否可有可无?
代码
效果:网页换肤
<!DOCTYPE html>
<html>
<head>
<title>网页换肤</title>
<link rel="shortcut icon" href="../icons/project.jpg">
<style type="text/css">
body {
background-color: rgb(255, 221, 221);
}
.main {
width: 500px;
margin: 0 auto;
}
button {
width: 12px;
height: 12px;
margin: 2px;
padding: 0;
outline: none;
border: 0;
text-align: center;
}
#red {
background-color: red;
}
#green {
background-color: green;
}
#black {
background-color: black;
}
#content {
margin-top: 5px;
text-align: center;
border-collapse: collapse;
background-color: red;
}
#content td {
width: 600px;
height: 23px;
border: 1px solid white;
font-size: small;
color: white;
}
td:hover {
text-decoration: underline;
cursor: pointer;
}
li {
width: 4px;
height: 4px;
background-color: white;
list-style-type: none;
margin-left: 4px;
display: none;
}
</style>
</head>
<body>
<div class="main">
<button id="red" title="红色" class="current"><li></li></button>
<button id="green" title="绿色" ><li></li></button>
<button id="black" title="黑色"><li></li></button>
<table id="content">
<tr>
<td>新闻</td>
<td>娱乐</td>
<td>体育</td>
<td>电影</td>
<td>音乐</td>
<td>旅游</td>
</tr>
</table>
<p id="demotest"></p>
</div>
<script>
var setTacolor = function(ccolor) {
var ta = document.getElementById("content");
ta.style.backgroundColor = ccolor;
}
var setBacolor = function(ccolor) {
document.body.style.backgroundColor = ccolor;
}
var oTa = document.getElementById("content");
var baColor = ["rgb(255, 221, 221)", "rgb(163, 197, 168)", "rgb(204, 204, 204)"]
;
var taColor = ["red", "green", "black"];
var oBtn = document.getElementsByTagName("button");
var oLi = document.getElementsByTagName("li");
window.onload = function() {
for(var i = 0; i < oBtn.length; ++ i) {
oBtn[i].index = i;
oBtn[i].onclick = function() {
for(var j = 0; j < oBtn.length; ++ j) {
j != this.index && (oLi[j].style.display = "none");
}
oLi[this.index].style.display = "block";
setTacolor(taColor[this.index]);
setBacolor(baColor[this.index]);
}
}
}
</script>
</body>
</html>
JavaScript小练习2-网页换肤的更多相关文章
- JavaScript网页换肤
使网页背景颜色可选黄/粉 <!doctype html> <html> <head><title>网页换肤</title></head ...
- JS实现网页换肤功能效果
网页换肤的基本原理 使用 JS 切换对应的 CSS 样式表.例如hao123首页的右上方就有网页换肤功能.除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 Cookie 来记录用户之前更换过 ...
- js网页换肤
使网页背景颜色可选黄/粉 <html> <head> <meta charset="utf-8"> <meta name="ge ...
- 【转】Javascript+css 实现网页换肤功能
来源:http://www.php100.com/html/webkaifa/DIV_CSS/2008/1014/2326.html Html代码部分: 1.要有一个带id的样式表链接,我们要通过操作 ...
- 网页换肤,模块换肤,jQuery的Cookie插件使用(转)
具体效果如下: 第一次加载如下图: 然后点击天蓝色按钮换成天蓝色皮肤如下图: 然后关闭网页重新打开或者在打开另一个网页如下图: 因为皮肤用Cookie保存了下来,所以不会重置 具体的实现代码如下: & ...
- 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)
1. [代码][JS]代码 <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...
- JavaScript实现网页换肤
<html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...
- 网上找到的一个jquery版网页换肤特效
这个跟我之前在锋利的JQuery那本书里看到的那个一模一样. <!DOCTYPE html> <html> <head> <meta name="& ...
- css, js 项目练习之网页换肤
首先,该练习参考自:https://www.jianshu.com/p/2961d9c317a3 我就直接上代码了(颜色可以自己调). HTML: <nav> <li>< ...
随机推荐
- node定时任务
var schedule = require('node-schedule') require('shelljs/global'); function scheduleCronstyle(){ sch ...
- UNIX/Linux系统管理技术手册(3)----bash 数组和算术运算
复杂的数据结构和计算不是 bash 的特长.但它的确至少提供了数组和算术运算. 1.算术运算 所有的 bash 变量的值都是字符串,所以 bash 在赋值的时候并不区分数字 1 和 字符串 " ...
- VS2010环境开发Teamcenter ITK
前言 这篇文章主要是用Teamcenter ITK开发的入门配置教程.几个月前学习ITK开发时,领导要求将配置过程整理成学习笔记.最近同事要做ITK开发,就发给他了.感觉这篇文章对别人还是有帮助的,决 ...
- WCF安全 z
WCF custom authentication using ServiceCredentials The generally accepted way of authenticating a us ...
- case选择语句
#!/bin/bash PS3="please select menu:" select i in "Apache" "Mysql&quo ...
- JavaScript检测数据类型
JavaScript检测数据类型 标签(空格分隔): JavaScript function valType(value) { return Object.prototype.toString.cal ...
- Oracle修改表名的几种方式
因为原来所在表不想被删除,但又需要新建立一个相同表名的表,故先把原来的表的表名更改为另一个临时表名. 查看当前用户下所有的表 select tname from tab where tabtype= ...
- MyEcplise使用---使用 MyEclipse 反转引擎生成数据库
使用 MyEclipse 反转引擎,生成数据库 步骤: 1. 新建 Database 连接 2. 新建web项目 temp 添加myeclipse hibernate 能力 3. Hibernate ...
- OC基础数据类型-NSString
1.字符串的初始化 //字符串的初始化 NSString *str = @"Hello world!"; NSString *str2 = [[NSString alloc] in ...
- 使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery
要在S/4HANA里创建Outbound Delivery,首先要具有一个销售订单,ID为376,通过事务码VA03查看. 只用61行代码就能实现基于这个Sales Order去创建对应的outbou ...