面向对象tab栏切换
//tab.css
* {
margin : 0;
padding : 0;
}
li {
list-style-type : none;
}
main {
width : 960px;
height : 500px;
border-radius : 10px;
margin : 50px auto;
}
main h4 {
height : 100px;
line-height : 100px;
text-align : center;
}
.tab_box {
width : 900px;
margin : 0 auto;
height : 400px;
border : 1px solid lightsalmon;
position : relative;
}
.tab_nav ul {
overflow : hidden;
}
.tab_nav ul li {
float : left;
width : 100px;
height : 50px;
line-height : 50px;
text-align : center;
border-right : 1px solid #ccc;
position : relative;
}
.tab_nav ul li.nav_active {
border-bottom : 2px solid #fff;
z-index : 9;
}
.tab_nav ul li span:last-child {
position : absolute;
user-select : none;
font-size : 12px;
top : -18px;
right : 0;
display : inline-block;
height : 20px;
}
.tab_nav input {
width : 80%;
height : 60%;
outline-width : 0;
border : 1px solid #ccc;
}
.tab_close {
display : block;
}
.tab_add {
position : absolute;
top : 0;
right : 0;
}
.tab_add span {
display : block;
width : 20px;
height : 20px;
line-height : 20px;
text-align : center;
border : 1px solid #ccc;
float : right;
margin : 10px;
user-select : none;
}
.tab_con {
width : 100%;
height : 300px;
position : absolute;
padding : 30px;
top : 50px;
left : 0px;
box-sizing : border-box;
border-top : 1px solid #ccc;
}
.tab_con section,
.tab_con section.con_active {
display : none;
width : 100%;
height : 100%;
}
.tab_con section.con_active {
display : block;
}
.tab_con input {
width : 80%;
height : 60%;
outline-width : 0;
border : 1px solid #ccc;
}
//style.css
@font-face { font-family : "iconfont" ;
src : url('./iconfont/iconfont.eot?t=1553960438096') ;
src : url('./iconfont/iconfont.eot?t=1553960438096#iefix') format ( 'embedded-opentype' ) ,
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAK4AAsAAAAABmwAAAJrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAp4fwE2AiQDCAsGAAQgBYRtBzAbpQXIrrApw71oi3CCOyzEy8RvE4yIN8TD036/zp03qCYRjaJZNBFFS/gREoRGipQKofjuNrb+9XbTqrmXcqWzfTRDqFqWkhAJzYToaE6LQ7Q30CirRqSKMnj58DdIdrNAdhoTQJa5VGfLrtiAy+lPoAcZdUC57UljTR4TMAo4oL0xiqwYG8YueIHPCdTqYajty/t+bUpmrwvEnUK42lQhLMssVy1UNhzN4kmF6vSQVvMY/T5+HEU1SUXBbti7uBBrx++cgqJULp0GhAgBna5AgSkgE0eN6R1NwTitNt0yAI5VG7wr/8AljmoX7K+zq+tBF1Q8k9JTPWp1AjnJDgCzmM3bU0V31dsvV3M2eC6fHjaGfX/qS7U5Gr58vj6uD0bgxudyrV/OtHHyP+NZnpO1txbktjdY+3FB61+7nxeOzq8niGYnRwT3v3aZxeXf6rrNxl5//49WlEtZUUL1Pj3Bv1EO7MuG2namrCkbvcnApLUJtWpRhv2tzlRLx43kQ7WO2/FW6c5QqDZEZnYKFeosoVK1NdSa5E/XaVM1Ra7BhAEQmk0kjV5QaLbIzG5U6HRRqTkK1DqJtivrjMT1zJaNnIsihAiyQE3JdbszcW0Xiadzdl4d8UO0HSUGNDNXzl2hifYSO5pPjrorgdjUAAavoa5TKDZVUXD3kuuOOzh70fShvUiN2owtNsRxIREIIiATUCYpGO2aqXy/CxEeHcfuaKrLDiGbQ5kcEMsNIK8M5qCmR3mn8RFHOpcECBtlAAwWIZ2OAqV5kQoJXHvShORYBzrDZKhhb3uT8QPlrA3bmsKZV6i89DiTV2o1AAAA') format ( 'woff2' ) ,
url('./iconfont/iconfont.woff?t=1553960438096') format ( 'woff' ) ,
url('./iconfont/iconfont.ttf?t=1553960438096') format ( 'truetype' ) ,
url('./iconfont/iconfont.svg?t=1553960438096#iconfont') format ( 'svg' ) ;
}
.iconfont {
font-family : "iconfont" !important ;
font-size : 16px;
font-style : normal;
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
.icon-guanbi:before {
content : "\e676" ;
}
var that
class Tab {
constructor ( id) {
that = this
this . main = document. querySelector ( id)
this . add = this . main. querySelector ( '.tab_add' )
this . ul = this . main. querySelector ( '.tab_nav ul:first-child' )
this . fsection = this . main. querySelector ( '.tab_con' )
this . init ( )
}
init ( ) {
this . updateNode ( )
this . add. onclick = this . addTab
for ( var i = 0 ; i < this . lis. length; i++ ) {
this . lis[ i] . index = i
this . lis[ i] . onclick = this . toggleTab
this . remove[ i] . onclick = this . removeTab
this . spans[ i] . ondblclick = this . editTab
this . sections[ i] . ondblclick = this . editTab
}
}
clearClass ( ) {
for ( var i = 0 ; i < this . lis. length; i++ ) {
this . lis[ i] . className = ''
this . sections[ i] . className = ''
}
}
updateNode ( ) {
this . lis = this . main. querySelectorAll ( 'li' )
this . sections = this . main. querySelectorAll ( 'section' )
this . remove = this . main. querySelectorAll ( '.icon-guanbi' )
this . spans = this . main. querySelectorAll ( '.tab_nav li span:first-child' )
}
toggleTab ( ) {
console. log ( this . index)
that. clearClass ( )
this . className = 'nav_active'
that. sections[ this . index] . className = 'con_active'
}
addTab ( ) {
that. clearClass ( )
var random = Math. random ( )
var li =
'<li class="nav_active"><span>测试卡</span><span class="iconfont icon-guanbi"></span></li>'
var section =
'<section class="con_active">测试' + random + '相关的内容</section>'
that. ul. insertAdjacentHTML ( 'beforeend' , li)
that. fsection. insertAdjacentHTML ( 'beforeend' , section)
that. init ( )
}
removeTab ( e) {
e. stopPropagation ( )
var index = this . parentNode. index
that. lis[ index] . remove ( )
that. sections[ index] . remove ( )
that. init ( )
if ( document. querySelector ( '.nav_active' ) ) return ;
index--
that. lis[ index] && that. lis[ index] . click ( )
}
editTab ( ) {
var str = this . innerHTML
console. log ( str)
window. getSelection ? window. getSelection ( ) . removeAllRanges ( ) : document. getSelection. empty ( )
this . innerHTML = '<input type="text"/>'
var input = this . children[ 0 ]
input. value = str
input. select ( )
input. onblur = function ( ) {
this . parentNode. innerHTML = this . value
}
input. onkeyup = function ( e) {
if ( e. keyCode === 13 ) {
this . blur ( )
}
}
}
}
new Tab ( '#tab' )
//index.html
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> 面向对象tab栏切换</ title>
< link rel = " stylesheet" href = " css/tab.css" />
< link rel = " stylesheet" href = " css/style.css" />
</ head>
< body>
< main>
< h4> Js 面向对象 动态添加标签页</ h4>
< div class = " tab_box" id = " tab" >
< nav class = " tab_nav" >
< ul>
< li class = " nav_active" >
< span> 测试1</ span> < span class = " iconfont icon-guanbi" > </ span>
</ li>
< li>
< span> 测试2</ span> < span class = " iconfont icon-guanbi" > </ span>
</ li>
< li>
< span> 测试3</ span> < span class = " iconfont icon-guanbi" > </ span>
</ li>
</ ul>
< div class = " tab_add" >
< span> +</ span>
</ div>
</ nav>
< div class = " tab_con" >
< section class = " con_active" > 测试1相关的内容</ section>
< section> 测试2相关的内容</ section>
< section> 测试3相关的内容</ section>
</ div>
</ div>
</ main>
< script src = " js/tab.js" > </ script>
</ body>
</ html>
利用数组方法实现简单的查询功能
* {
margin : 0;
padding : 0;
}
.main {
width : 600px;
text-align : center;
margin : 100px auto;
}
.main input {
width : 40px;
outline : 0;
border : 1px solid #ccc;
text-align : center;
}
.main button {
font-size : 10px;
}
table {
width : 400px;
margin : 20px auto;
text-align : center;
border-collapse : collapse;
}
th,
td {
border : 1px solid #333;
}
data = [ {
id: 1 ,
name: 'xiaomi' ,
price: 1999
} ,
{
id: 2 ,
name: 'sanxing' ,
price: 3999
} ,
{
id: 3 ,
name: 'huawei' ,
price: 4299
} ,
{
id: 4 ,
name: 'vivo' ,
price: 2399
}
]
var tbody = document. querySelector ( 'tbody' )
setData ( data)
function setData ( arr) {
tbody. innerHTML = ''
arr. forEach ( function ( value) {
var tr = document. createElement ( 'tr' )
tr. innerHTML = '<td>' + value. id + '</td><td>' + value. name + '</td><td>' + value. price + '</td>'
tbody. appendChild ( tr)
} ) ;
}
var price_search = document. querySelector ( '.price_search' )
var start = document. querySelector ( '.start' )
var end = document. querySelector ( '.end' )
price_search. addEventListener ( 'click' , function ( ) {
var res = data. filter ( function ( value) {
return value. price >= start. value && value. price <= end. value
} )
setData ( res)
} )
var pname = document. querySelector ( '.pname' )
var name_search = document. querySelector ( '.name_search' )
name_search. addEventListener ( 'click' , function ( ) {
var res = [ ]
data. some ( function ( value) {
if ( value. name == pname. value) {
res. push ( value)
return true
}
} )
setData ( res)
} )
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> 利用数组方法实现查询功能</ title>
< link rel = " stylesheet" href = " css/search.css" />
</ head>
< body>
< div class = " main" >
< div class = " header" >
< span> 按商品价格查询:</ span>
< input type = " text" class = " start" />
< span> -</ span>
< input type = " text" class = " end" />
< button class = " price_search" > 搜索</ button>
< span> 按商品名称查询:</ span>
< input type = " text" class = " pname" />
< button class = " name_search" > 查询</ button>
</ div>
< table>
< thead>
< tr>
< th> id</ th>
< th> 产品名称</ th>
< th> 价格</ th>
</ tr>
</ thead>
< tbody> </ tbody>
</ table>
</ div>
< script src = " js/index.js" > </ script>
</ body>
</ html>
点击输出li的索引号
var aLis = document. querySelectorAll ( 'li' )
for ( let i = 0 ; i < aLis. length; i++ ) {
aLis[ i] . onclick = function ( ) {
console. log ( i)
}
}
var aLis = document. querySelectorAll ( 'li' )
for ( let i = 0 ; i < aLis. length; i++ ) {
aLis[ i] . index = i
aLis[ i] . onclick = function ( ) {
console. log ( this . index)
}
}
$ ( function ( ) {
$ ( 'li' ) . on ( 'click' , function ( ) {
var index = $ ( this ) . index ( )
console. log ( index)
} )
} )
var aLis = document. querySelectorAll ( 'li' )
for ( var i = 0 ; i < aLis. length; i++ ) {
( function ( i) {
aLis[ i] . onclick = function ( ) {
console. log ( i)
}
} ) ( i)
}
var aLis = document. querySelectorAll ( 'li' )
for ( var i = 0 ; i < aLis. length; i++ ) {
( function ( i) {
setTimeout ( function ( ) {
aLis[ i] . onclick = function ( ) {
console. log ( aLis[ i] . innerHTML)
}
} , 2000 )
} ) ( i) ;
}
offset系列的轮播图
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> Document</ title>
< style>
* {
margin : 0;
padding : 0;
}
ul li,
ol li {
list-style : none;
}
.banner {
width : 200px;
height : 200px;
padding : 10px;
border : 1px solid #ccc;
margin-top : 100px;
margin-left : 50px;
position : relative;
}
.screen {
width : 200px;
height : 200px;
overflow : hidden;
position : relative;
}
.screen ul {
position : absolute;
left : 0;
top : 0;
width : 1000px;
}
ul li {
width : 200px;
height : 200px;
float : left;
overflow : hidden;
}
.screen ol {
position : absolute;
right : 10px;
bottom : 10px;
}
.screen ol li {
width : 20px;
height : 20px;
background-color : #fff;
float : left;
margin-left : 5px;
cursor : pointer;
opacity : 0.7;
line-height : 20px;
text-align : center;
}
.screen ol li.current {
background-color : yellow;
}
.screen .nav {
position : relative;
top : 50%;
transform : translateY ( -50%) ;
}
.nav span {
position : absolute;
display : block;
width : 20px;
height : 20px;
background : #fff;
opacity : 0.4;
color : #000;
vertical-align : middle;
text-align : center;
cursor : pointer;
}
.nav span:first-of-type {
position : absolute;
left : 0;
}
.nav span:last-of-type {
position : absolute;
right : 0;
}
</ style>
</ head>
< body>
< div class = " banner" >
< div class = " screen" >
< ul>
< li> < img src = " ./imgs/11.jpg" alt = " " style =" width : 200px; height : 200px; " > </ li>
< li> < img src = " ./imgs/22.jpg" alt = " " style =" width : 200px; height : 200px; " > </ li>
< li> < img src = " ./imgs/33.jpg" alt = " " style =" width : 200px; height : 200px; " > </ li>
< li> < img src = " ./imgs/44.jpg" alt = " " style =" width : 200px; height : 200px; " > </ li>
</ ul>
< ol> </ ol>
< div class = " nav" >
< span class = " left" > < </ span>
< span class = " right" > > </ span>
</ div>
</ div>
</ div>
< script>
window. onload = function ( ) {
var oBanner = document. querySelector ( '.banner' )
console. log ( oBanner) ;
var oScreen = document. querySelector ( '.screen' )
console. log ( oScreen) ;
var imgWidth = oScreen. offsetWidth
console. log ( imgWidth) ;
var oUl = document. querySelector ( 'ul' )
console. log ( oUl) ;
var oOl = document. querySelector ( 'ol' )
console. log ( oOl) ;
var oNav = document. querySelector ( '.nav' )
var oNavs = oNav. children
console. log ( oNavs) ;
console. log ( oUl. children[ 0 ] ) ;
var newUlLi = oUl. children[ 0 ] . cloneNode ( true )
oUl. appendChild ( newUlLi)
for ( var i = 0 ; i < oUl. children. length - 1 ; i++ ) {
var newOlLi = document. createElement ( 'li' )
newOlLi. innerHTML = i + 1
oOl. appendChild ( newOlLi)
}
var olArr = oOl. children
olArr[ 0 ] . className = 'current'
for ( var i = 0 ; i < olArr. length; i++ ) {
olArr[ i] . index = i
olArr[ i] . onmouseover = function ( ) {
for ( var j = 0 ; j < olArr. length; j++ ) {
olArr[ j] . className = ''
}
this . className = 'current'
key = square = this . index
console. log ( this . index) ;
animate ( oUl, - this . index * imgWidth)
}
}
var timer = setInterval ( autoPlay, 1000 ) ;
var key = 0
var square = 0
function autoPlay ( ) {
key++
if ( key > olArr. length) {
oUl. style. left = 0
key = 1
}
animate ( oUl, - key * imgWidth)
square++
if ( square > olArr. length - 1 ) {
square = 0
}
for ( var i = 0 ; i < olArr. length; i++ ) {
olArr[ i] . className = ''
}
olArr[ square] . className = 'current'
}
oBanner. onmouseover = function ( ) {
oNav. style. display = 'block'
clearInterval ( timer)
}
oBanner. onmouseout = function ( ) {
oNav. style. display = 'none'
timer = setInterval ( autoPlay, 1000 ) ;
}
oNavs[ 0 ] . onclick = function ( ) {
key--
if ( key < 0 ) {
oUl. style. left = - imgWidth * ( olArr. length) + 'px'
key = olArr. length - 1
}
animate ( oUl, - key * imgWidth)
square--
if ( square < 0 ) {
square = olArr. length - 1
}
for ( var i = 0 ; i < olArr. length; i++ ) {
olArr[ i] . className = ''
}
olArr[ square] . className = 'current'
}
oNavs[ 1 ] . onclick = function ( ) {
autoPlay ( )
}
function animate ( ele, target) {
clearInterval ( ele. timer)
var speed = target > ele. offsetLeft ? 10 : - 10
ele. timer = setInterval ( ( ) => {
var value = target - ele. offsetLeft
ele. style. left = ele. offsetLeft + speed + 'px'
if ( Math. abs ( value) < Math. abs ( speed) ) {
ele. style. left = target + 'px'
clearInterval ( ele. timer)
}
} , 10 ) ;
}
}
</ script>
</ body>
</ html>
offset系列缓慢动画的封装
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> Document</ title>
< style>
* {
margin : 0;
padding : 0;
}
.box {
width : 200px;
height : 200px;
background : pink;
position : absolute;
top : 50px;
}
</ style>
</ head>
< body>
< button class = " btn" > left:400</ button>
< div class = " box" style =" left : 0; " > </ div>
< script>
var oBtn = document. querySelector ( '.btn' )
var oBox = document. querySelector ( '.box' )
oBtn. onclick = function ( ) {
animate ( oBox, 400 )
}
function animate ( ele, target) {
clearInterval ( ele. timer)
ele. timer = setInterval ( ( ) => {
var step = ( target - ele. offsetLeft) / 10
var value = target - ele. offsetLeft
step = step > 0 ? Math. ceil ( step) : Math. floor ( step)
ele. style. left = ele. offsetLeft + step + 'px'
if ( Math. abs ( value) < Math. abs ( target) ) {
ele. style. left = target + 'px'
clearInterval ( ele. timer)
}
} , 30 ) ;
}
</ script>
</ body>
</ html>
闭包应用计算打车费
var car = ( function ( ) {
var start = 13
var total = 0
return {
price: function ( n) {
if ( n <= 3 ) {
total = start
} else {
total = start + ( n - 3 ) * 5
}
return total
} ,
yd: function ( flag) {
return flag ? total + 10 : total
} ,
}
} ) ( )
console. log ( car. price ( 5 ) )
console. log ( car. yd ( true ) )
递归求斐波那契数列
var n = prompt ( 'please input a number:' )
function fn ( n) {
if ( n === 1 || n === 2 ) {
return 1
}
return fn ( n - 1 ) + fn ( n - 2 )
}
console. log ( fn ( n) )
递归求阶乘
var n = prompt ( 'input' )
function f ( n) {
if ( n == 1 ) {
return 1
}
return n * f ( n - 1 )
}
console. log ( f ( n) )
利用递归,输入ID,返回对应对象
var data = [
{
id: 1 ,
name: '家电' ,
goods: [
{
id: 11 ,
gname: '冰箱' ,
goods: [
{
id: 110 ,
gname: '海尔' ,
} ,
{
id: 120 ,
gname: '美的' ,
} ,
] ,
} ,
{
id: 12 ,
gname: '洗衣机' ,
} ,
] ,
} ,
{
id: 2 ,
name: '服饰' ,
goods: [
{
id: 12 ,
gname: 'fish' ,
} ,
{
id: 20 ,
gname: 'apple' ,
} ,
] ,
} ,
]
var o = { }
function getID ( json, id) {
json. forEach ( function ( item) {
if ( item. id == id) {
o = item
} else if ( item. goods && item. goods. length > 0 ) {
o = getID ( item. goods, id)
}
} )
return o
}
var id = prompt ( )
console. log ( getID ( data, id) )
浅拷贝和深拷贝
var obj = {
id: 1 ,
name: 'falcon' ,
msg: {
age: 18 ,
hobby: 'singing' ,
sport: 'running' ,
} ,
color: [ 'pink' , 'red' ] ,
}
var o = { }
Object. assign ( o, obj)
console. log ( o)
function deepCopy ( newobj, oldobj) {
for ( var k in oldobj) {
var item = oldobj[ k]
if ( item instanceof Array ) {
newobj[ k] = [ ]
deepCopy ( newobj, item)
} else if ( item instanceof Object ) {
newobj[ k] = { }
deepCopy ( newobj, item)
} else {
newobj[ k] = item
}
}
}
deepCopy ( o, obj)
console. log ( o)
o. msg. age = 20
console. log ( o)
利用正则进行简单的表单验证
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> 用户名的验证</ title>
< style>
.red {
color : red;
}
.green {
color : green;
}
</ style>
</ head>
< body>
< div>
请输入用户名:
< input type = " text" />
< span> </ span>
</ div>
< script>
var iput = document. querySelector ( 'input' )
var span = document. querySelector ( 'span' )
iput. addEventListener ( 'blur' , function ( ) {
var reg = /^[a-zA-Z0-9-_]{6,16}$/
var str = iput. value
if ( reg. test ( str) ) {
span. innerHTML = '恭喜,通过'
span. className = 'green'
} else {
span. innerHTML = '对不起,错误'
span. className = 'red'
}
} )
</ script>
</ body>
</ html>
表单验证
* {
margin : 0;
padding : 0;
}
li {
list-style-type : none;
}
.register_box {
width : 800px;
height : 600px;
border : 0.2px solid #ccc;
margin : 40px auto;
border-radius : 10px;
}
ul {
margin : 50px auto;
}
.register_box li {
margin-bottom : 15px;
}
.register_box label {
display : inline-block;
width : 100px;
height : 36px;
text-align : right;
}
.inp {
width : 240px;
height : 34px;
border : 0.5px solid #ccc;
margin-left : 10px;
outline : none;
}
.safe {
padding-left : 190px;
color : #b2b2b2;
}
.safe em {
padding : 0 12px;
color : #fff;
}
.ruo {
background-color : #de1111;
}
.zhong {
background-color : #40b83f;
}
.qiang {
background-color : #f79100;
}
.agree {
padding-top : 20px;
padding-left : 100px;
}
.agree input {
vertical-align : middle;
margin-right : 5px;
}
.agree a {
color : #1ba1e6;
}
.over {
width : 200px;
height : 34px;
background-color : #c81623;
margin : 30px 0 0 130px;
border : none;
color : #fff;
font-size : 14px;
}
.success {
color : #40b83f;
margin-left : 10px;
}
.error {
color : #df3033;
margin-left : 10px;
}
.msg {
color : #f79100;
margin-left : 10px
}
.success-icon,
.error_icon,
.msg_icon {
display : inline-block;
width : 20px;
height : 20px;
vertical-align : middle;
margin-top : -2px;
background : url(/img/register/right.png) no-repeat;
}
.error_icon {
background : url(/img/register/wrong.png) ;
}
.msg_icon {
background : url(/img/register/mess.png) ;
}
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> 表单验证</ title>
< link rel = " stylesheet" href = " css/check.css" />
</ head>
< body>
< div class = " register_box" >
< ul>
< li>
< label for = " " > 手机号:</ label>
< input type = " text" class = " inp" id = " tel" />
< span> </ span>
</ li>
< li>
< label for = " " > QQ:</ label>
< input type = " text" class = " inp" id = " qq" />
< span> </ span>
</ li>
< li>
< label for = " " > 昵称:</ label>
< input type = " text" class = " inp" id = " nc" />
< span> </ span>
</ li>
< li>
< label for = " " > 短信验证码:</ label>
< input type = " text" class = " inp" id = " msg" />
< span> </ span>
</ li>
< li>
< label for = " " > 登录密码:</ label>
< input type = " text" class = " inp" id = " pwd" />
< span> </ span>
</ li>
< li class = " safe" >
安全程度
< em class = " ruo" > 弱</ em>
< em class = " zhong" > 中</ em>
< em class = " qiang" > 强</ em>
</ li>
< li>
< label for = " " > 确认密码:</ label>
< input type = " text" class = " inp" id = " surepwd" />
< span> </ span>
</ li>
< li class = " agree" >
< input type = " checkbox" /> 同意协议并注册
< a href = " #" > 《知果果用户协议》</ a>
</ li>
< li>
< input type = " submit" value = " 完成注册" class = " over" />
</ li>
</ ul>
</ div>
< script src = " js/check.js" > </ script>
</ body>
</ html>
window. onload = function ( ) {
var regtel = /^1[3|4|5|6|7|8|9]\d{9}$/
var tel = document. querySelector ( '#tel' )
regexp ( tel, regtel)
var regqq = /^[1-9][0-9]{4,}$/
var qq = document. querySelector ( '#qq' )
regexp ( qq, regqq)
var regnc = /^[\u4e00-\u9fa5]{2,8}$/
var nc = document. querySelector ( '#nc' )
regexp ( nc, regnc)
var regmsg = /^\d{6}$/
var msg = document. querySelector ( '#msg' )
regexp ( msg, regmsg)
var regpwd = /^[a-zA-Z0-9_-]{6-16}$/
var pwd = document. querySelector ( '#pwd' )
regexp ( pwd, regpwd)
surepwd = document. querySelector ( '#surepwd' )
surepwd. addEventListener ( 'blur' , function ( ) {
if ( this . value == pwd. value) {
this . nextElementSibling. className = 'success'
this . nextElementSibling. innerHTML = '<i class="success_icon"></i> 恭喜,验证通过'
} else {
this . nextElementSibling. className = 'error'
this . nextElementSibling. innerHTML = '<i class="error_icon"></i>错误,两次密码输入不一致'
}
} )
function regexp ( ele, reg) {
ele. addEventListener ( 'blur' , function ( ) {
if ( this . value. trim ( ) === '' ) {
this . nextElementSibling. className = 'msg'
this . nextElementSibling. innerHTML = '<i class="msg_icon"></i>输入不能为空'
} else if ( reg. test ( this . value) ) {
this . nextElementSibling. className = 'success'
this . nextElementSibling. innerHTML = '<i class="success_icon"></i>恭喜,输入正确'
} else {
this . nextElementSibling. className = 'error'
this . nextElementSibling. innerHTML = '<i class="error_icon"></i>错误,请重新输入'
}
} )
}
}
敏感词过滤
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" />
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" />
< title> 敏感词过滤</ title>
</ head>
< body>
< textarea name = " " id = " msg" cols = " 30" rows = " 10" > </ textarea
> < button> 提交</ button>
< div> </ div>
< script>
var text = document. querySelector ( '#msg' )
var btn = document. querySelector ( 'button' )
var div = document. querySelector ( 'div' )
btn. addEventListener ( 'click' , function ( ) {
var con = text. value. replace ( /激情/g , '**' )
div. innerHTML = con
} )
</ script>
</ body>
</ html>