<!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. UT源码105032014093

    需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Ce ...

  2. 学习笔记TF054:TFLearn、Keras

    元框架(metaframework). TFLearn.模块化深度学习框架,更高级API,快速实验,完全透明兼容. TFLearn实现AlexNet.https://github.com/tflear ...

  3. node中的事件发射器

    在事件环中node通过on和emit进行事件的接收和发射,笔者以简单的窗口聊天小demo来演示一下如何通过事件环来发射和监听事件并执行回掉: var events=require('events') ...

  4. javascript 操作节点的属性

    使用层次关系访问节点 parentNode:返回节点的父节点 childNodes:返回子节点集合,childNodes[i] firstChild:返回节点的第一个子节点,最普遍的用法是访问该元素的 ...

  5. xamarin android 文件选择

    调出选择界面: Intent intent = new Intent(Intent.ActionGetContent); intent.AddCategory(Intent.CategoryOpena ...

  6. TensorFlow机器学习实战指南之第二章

    一.计算图中的操作 在这个例子中,我们将结合前面所学的知识,传入一个列表到计算图中的操作,并打印返回值: 声明张量和占位符.这里,创建一个numpy数组,传入计算图操作: import tensorf ...

  7. js for循环中定义clike事件由于闭包导致的循环变量获取不到的问题

    在网上找的 记下来以备不时之需 案例; 本人有一个数组按钮  循环数组按钮 给每个按钮添加click事件 原本以为搞定但是出现了 每个按钮都是数组最后的方法 然后查找问题 发现onclike事件中的i ...

  8. 学习Python3 天眼查 爬虫

    刚开始学习Python,不愿意看基础,记忆不好,那些语法记不住,直接上个项目,这样比较深刻 刚好公司有个情况要查企业的信息,就想做个爬虫吧,有验证码的不愿意搞,那是个老大难问题,就选择了天眼查 过程都 ...

  9. 1080P60视频源---verilog

    1080P60视频源---verilog `timescale 1ns / 1ps ////////////////////////////////////////////////////////// ...

  10. WIN10X64_LTSB2016极限精简版by双心

    WIN10X64LTSB2016极限精简版by双心http://www.cnblogs.com/liuzhaoyzz/p/9162113.html 一.前言:关于极限精简版的说明 本系统为极限精简版, ...