<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="jquery-3.3.1.min.js"></script>
<script src="../JQuery/carhartl-jquery-cookie-92b7715/jquery.cookie.js"></script>
<style>
#box{
height: 300px;
width: 300px;
border: 2px solid gainsboro;
}
.initial{
background-color: forestgreen;
}
.class1{
background-color: aquamarine;
}
.class2{
background-color: salmon;
}
.class3{
background-color: skyblue;
}
.class4{
background-color: sienna;
}
.class5{
background-color: gold;
}
</style>
</head>
<body>
<div id="input">
<input type="checkbox" value="class1">
<input type="checkbox" value="class2">
<input type="checkbox" value="class3">
<input type="checkbox" value="class4">
<input type="checkbox" value="class5">
<div id="box" class="initial">
</div>
</div>
<!-- <script>
//原生JavaScript 思路1
var inputGroup = document.getElementsByTagName("input");
var inputBox = document.getElementById("input");
var box = document.getElementById("box");
console.log(inputGroup);
for(let i = 0; i < inputGroup.length; i ++){
var ii = i;
inputGroup[i].onclick = function(){
var siblings = inputBox.children;
var newColor = this.value;
console.log(newColor);
for(var j = 0; j < siblings.length;j++){
siblings[j].checked = false;
console.log(1);
}
// this.checked = true;//如果不用this呢?
console.log(inputGroup[i]);//undefined 说明这里并没有i的数值(使用var而非let时)
// console.log(inputGroup[ii]);//函数内部的i与循环变量i有各自的作用域 ii始终等于i的最后一个值
inputGroup[i].checked = true;
box.style.backgroundColor = newColor;
}
} </script> -->
<script>
//jQuery实现
var $btnGroup = $("input[type='checkbox']");
$btnGroup.click(function(){
$(this).prop("checked",true)
.siblings().prop("checked",false)
.end();
$("#box").prop("class",$(this).val());
$.cookie("currentSkin",$(this).val(),{path:'/',expires:10});
var storedSkin = $.cookie("currentSkin");
console.log($(this).val(),storedSkin);//undefined,需要在服务器下使用
})
var storedSkin = $.cookie("currentSkin");
if(storedSkin){
// 直接读取cookie,cookie的本质是一个txt字符串
} //整套样式表:
// <link href = "skin/light.css" rel = "stylesheet" id = "classFile">
// $("classFile").attr("href","skin/" + $(this).val() + ".css"); </script> </body>
</html>

注意这里用到了jQuery的cookie插件,而其需要在服务器下使用,而我是个弟弟哈。本地读取cookie的结果是undefined。

可以读读这位大佬的文章:传送门

--4-17更新--

得益于Appserv,cookie功能也能使用了,成就感比兴趣更能驱动编程...

<script>
//jQuery实现
var $btnGroup = $("input[type='checkbox']");
$btnGroup.click(function(){
$(this).prop("checked",true)
.siblings().prop("checked",false)
.end();
$("#box").prop("class",$(this).val());
$.cookie("currentSkin",$(this).val(),{path:'/',expires:10});
var storedSkin = $.cookie("currentSkin");
console.log(storedSkin);//本地的话undefined,需要在服务器下使用
})
var storedSkin = $.cookie("currentSkin");
if($.cookie("currentSkin") !== "null"){//这里就不能再"if($.cookie("***"))"了,因为这样无论cookie是否有有效值都会执行
$("#box").prop("class",storedSkin);
}else{
$("#box").prop("class","initial");
}
$("#clearCookie").click(function(){
$.cookie("currentSkin",null);
$("#box").prop("class","initial");
});
</script>

效果~

网页换肤:原生js与jq的更多相关文章

  1. JS实现网页换肤功能效果

    网页换肤的基本原理 使用 JS 切换对应的 CSS 样式表.例如hao123首页的右上方就有网页换肤功能.除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 Cookie 来记录用户之前更换过 ...

  2. js网页换肤

    使网页背景颜色可选黄/粉 <html> <head> <meta charset="utf-8"> <meta name="ge ...

  3. JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)

    JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...

  4. JavaScript网页换肤

    使网页背景颜色可选黄/粉 <!doctype html> <html> <head><title>网页换肤</title></head ...

  5. 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)

    1. [代码][JS]代码    <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...

  6. 网页换肤,模块换肤,jQuery的Cookie插件使用(转)

    具体效果如下: 第一次加载如下图: 然后点击天蓝色按钮换成天蓝色皮肤如下图: 然后关闭网页重新打开或者在打开另一个网页如下图: 因为皮肤用Cookie保存了下来,所以不会重置 具体的实现代码如下: & ...

  7. 原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度

    JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...

  8. 【转】Javascript+css 实现网页换肤功能

    来源:http://www.php100.com/html/webkaifa/DIV_CSS/2008/1014/2326.html Html代码部分: 1.要有一个带id的样式表链接,我们要通过操作 ...

  9. 原生JS与JQ获取元素的区别

    刚学JQ不久,有时候可能会把JS和JQ获取元素的方式搞错,接下来获取属性方法什么的就一发不可收拾了,现在把两者获取获取元素的代码整理下. 一.原生JS获取元素. 1.常用的三种方式获取元素对象(将指定 ...

随机推荐

  1. centos7图形界面安装

    系统笔者采用的是centos7 可以通过/etc/inittab文件看到 yum groupinstall "X Window System" -y             # 首 ...

  2. 2050 Programming Competition

    http://2050.acmclub.cn/contests/contest_show.php?cid=3 开场白 Time Limit: 2000/1000 MS (Java/Others)    ...

  3. 二.Flask 学习模板

    Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...

  4. Python Faker的使用(1):基础使用方法与函数速查,生成随机数据

    在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据. 在手动制造数据的过程中,可能需要花费大量精力和工作量,现在好了,有一 ...

  5. Java创建对象的4种方式

    Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...

  6. [转]Centos 7 安装部署 GitLab 服务器

    Centos 7 安装部署 GitLab 服务器 转自:https://www.jianshu.com/p/79bfded68899 文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总 ...

  7. E4A 与JS交互事件无反应

    今天碰到一个问题,E4A与JS的交互,调用JS函数后,事件没有任何反应,给JS赋值,会看到浏览框中有内容显示,但是事件为什么就没反应呢. 把官方的例程打开编译试了也不行. 后来在群中问了,原来是这里设 ...

  8. JetBrains GoLand 注册码

    选择license server 输入 http://idea.youbbs.org 完成 要求联网

  9. 在已安装64位oracle的服务器安装32位客户端

    应用场景:服务器操作系统是win2012 64位,原先安装了64位oracle12,后来系统增加导入excel的功能,网站必须启用32位兼容模式,这时候发现原有的页面打不开,提示: 试图加载格式不正确 ...

  10. 洛谷P1039 侦探推理(模拟)

    侦探推理 题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情 ...