js的几种循环方式
1.v-for可以循环的变量
* 数组 (带索引 index要和item在一个括号里 )
* 对象 (默认是vaule值 想获取key 把key和item写一个括号里 )
* 字符串 (空格也算字符想把空格也打印出来 要加判断)
* 数字
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p v-for="item in l">{{item}}</p> //数组
<p v-for="(index,item) in l">索引{{index}},{{item}}</p> //带索引的数组
<p v-for="item in d">{{item}}</p>//对象 默认是value
<p v-for="(key,item) in d">key:{{key}},{{item}}</p> //带key的对象
<p v-for="item in s">{{item}}</p> //字符串
<div v-for="item in s"> //打印出空格
<p v-if="item != ' '">{{item}}</p>
<br v-else>
</div>
<p v-for="item in 5">{{item}}</p> //打印数字
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
l: [1, 2, 3],
d: {name: 'joyce', age: 18},
s: 'hi joyce',
}
})
</script>
</html>
2.js的循环方式
* js的for循环基于索引的循环 python没有给予索引的循环 python都是基于迭代的循环
for(i=0;i<10;i++){
console.log(i)
var a=[4,5,6]
for (i = 0;i<a.length;i++){
console.log(a[i])
}
*js 的in循环 拿到的是索引 跟vue的v-for区分
var a =[4,5,6]
for (i in a){
// console.log(i) //拿索引
console.log(a[i]) //拿数据值
}
*es 6语法 of循环
var a = [4,5,6]
for (item of a){
console.log(item)
}
*数组的方法 forEach可以循环
var a = [4,5,6,7]
a.forEach(function (item) {
console.log(item)
})
*jq 的循环 循环数组 对象
var a = [4 , 2 , 3]
$.each(a,function (index,item) {
console.log(index)
console.log(item)
})
key值的解释
vue的v-for写在标签上 在标签上加一个key 用属性指令绑定一个变量 key的值每次都不一样 这样可以加速虚拟dom的替换 从而提高循环效率 key值必须唯一
<div v-for="item in 8" :key="item">{{item}}</div>
数据,对象的检测与更新
#对象 新增一个key:value 发现页面没有变化(如果是已有的key 想进行修改可以直接改)
方式一:
methods:{
handleClick(){
Vue.set(this.info,'hobby','篮球')
}
},
#固定写法 Vue.set(this.info,'key','value')
方式二:
methods:{
handleClick(){
this.info['age']='18'
this.info['hobby'] = '555'
}
},
#上面修改一个已有key的对象 下面添加一个新的对象会自动传入页面会变
input事件
input事件 | 触发条件 |
---|---|
click | 当单击的时候 触发的事件 |
input | 当输入框进行输入的时候 触发的事件 |
change | 当元素的值发生改变时 触发的事件 |
blur | 当输入框失去焦点的时候 触发的事件 |
focus | 当获得焦点 触发事件 |
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app" >
<h1>点击事件 click</h1>
<input type="text" @click="handleClick">
<h1>失去焦点事件</h1>
<input type="text" @blur="handleBlur">
<h1>input事件</h1>
<input type="text" @input="handleInput">
<h1>change事件</h1>
<input type="text" @change="handleChange" :value="info">
<h1>focus事件</h1>
<input type="text" @focus="handleFocus" >
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
info:"123",
},
methods:{
handleClick(){
alert(点了)
},
handleBlur(){
console.log('失去焦点 ')
},
handleInput(){
console.log('输入了')
},
handleChange(){
console.log('改变了')
},
handleFocus(){
console.log('获得焦点')
},
}
})
</script>
</html>
v-model双向数据绑定
input 可以输入值 输入后 就被js变量拿到 如果使用 :values = '变量' 这种形式 页面中输入框变化 变量不会变
<input type="text" :value="age">----{{age}}
使用 v-model = '变量'这种形式 做双向数据绑定
<input type="text" v-model="name">----{{name}}
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app" >
<h1>单向数据绑定</h1>
<input type="text" :value="age">----{{age}}
<h1>双向数据绑定</h1>
<input type="text" v-model="name">----{{name}}
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
name:'joyce',age:18
},
methods:{
},
})
</script>
</html>
过滤案例
补充:
1.数组的过滤方法
var newDataList = dataList.filter(function (item) {
return false //turn 标识保留 false表示值不要
})
2. 字符串的indexOf方法 判断子字符串是否在当前字符串中 返回的是索引 如果不在 返回-1
var s = 'joyce'
var s1 = 'j'
var i =s1.indexOf(s)
console.log(i)
3.es 6 箭头函数 函数中套函数 this指向有问题 有了箭头函数 箭头函数没有自己的this 用的是上一级的
var f=function () {
console.log('13')
}
4.箭头函数
//无参数 无返回值箭头函数
var f=()=>{
console.log('13')
}
//有一个参数 没有返回值的箭头函数 括号可以去掉
var f = index=>{
console.log('13')
}
//有两个参数 没有返回值的箭头函数 括号必须有
var f = (index,item)=>{
console.log('123')
}
//有一个参数一个返回值
var f = function (index) {
return index + '123'
}
//简化:
var f = index=>index + '123'
var res = f('456')
console.log(res)l
事件修饰符
事物修饰符 | 释义 |
---|---|
.stop | 只处理自己的事件 防止冒泡事件 写在子控件 |
.self | 只处理自己的事件 防止冒泡事件 写在父控件 |
.prevent | 阻止a链接的跳转 |
.once | 事件只会触发一次(适用于抽奖) |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h1>事件修饰符
<ul @click="handleUL">
<li @click.stop="handLI">1</li>
<li>2</li>
</ul>
<h1>阻止a跳转</h1>
<a href="http://www.baidu.com" @click.prevent="handleA">点我</a>
</h1>
<button @click.once="handleClick">抽奖</button>
</div>
</body>
<script>
var vm = new Vue({
el:'#app',
data:{
},
methods:{
handLI(){
alert('li123')
},
handleUL(){
alert('ul123')
},
handleA(){
alert('123')
location.href='http://www.cnblogs.com'
},
handleClick(){
alert('123')
},
}
})
</script>
</html>
案件修饰符
* 按键事件:按键盘上的某个键子 就会触发函数的执行
@keyup.enter 一样
@keyup.13
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="text" @keyup.enter="handleKeyUp">----{{text}}
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
text: '',
},
methods: {
handleKeyUp(event) {
if (event.keyCode == 13){
console.log('132')
}
},
}
})
</script>
</html>
表单控制
input -- 变量类型
text 类型
randio 单型
checkbox 单选或多选
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
<link rel="stylesheet" href="bootstrap.css">
<script src="bootstrap.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>用户名:<input type="text" v-model="username"></p>
<p>密码:<input type="text" v-model="password"></p>
<p>
男:<input type="radio" v-model="gender" value="1">
女:<input type="radio" v-model="gender" value="2">
</p>
<p>记住密码:<input type="checkbox" v-model="remember"></p>
<p>爱好:
篮球:<input type="checkbox" v-model="hobby" value="篮球">
足球:<input type="checkbox" v-model="hobby" value="足球">
排球:<input type="checkbox" v-model="hobby" value="排球">
</p>
<button @click="handleClick">点击</button>
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
username: '',
password: '',
gender: '',
remember:false,
hobby:[],
},
methods: {
handleClick(){
console.log(this.username,this.password,this.gender,this.remember,this.hobby)
},
}
})
</script>
</html>
标签:console,log,修饰符,item,事件,key,var,input
From: https://www.cnblogs.com/lzy199911/p/17124954.html