IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue案例 -> 正文阅读

[JavaScript知识库]vue案例

1、佛系挑选

引用:不知道中午应该吃什么?用vue写个实例帮我们抉择吧 - 掘金 (juejin.cn)

1、搭建框架

?需要:

1、收集用输入的随机选择的个数--v-model 进行绑定

2、收集用户输入的数据--监听回车事件

3、点击按钮,开始随机选择,并将结果进行显示

?textarea输入的数据,按照空格分行之后,怎么获取每个元素:this.inputdata.split('\n')

从一个数组中,随机选择一个或者多个元素的方法:

1、var item = items[Math.floor(Math.random()*items.length)];

2、function getRandomArrayElements(arr, count) {
? ? var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
? ? while (i-- > min) {
? ? ? ? index = Math.floor((i + 1) * Math.random());
? ? ? ? temp = shuffled[index];
? ? ? ? shuffled[index] = shuffled[i];
? ? ? ? shuffled[i] = temp;
? ? }
? ? return shuffled.slice(min);
}

<template>
  <div class="content">
    <h1>随机选择器</h1>
 <p>选择个数:<input type="text" placeholder="请输入需要选择的个数" v-model="chosenumber"></p>
 <button class="start" @click="chosestart">佛系选择开始</button>
 <div v-show="inputdata==''">请输入数据</div>
 <div v-show="chosenumber>datas.length">选择个数超过总的选择</div>
 <div class="input"><div>输入框:</div>
 <textarea name="" id="" cols="30" rows="10" placeholder="输入数据以回车分割" v-model="inputdata" ></textarea></div>

<div class="resultshow">
    <div>最终结果显示:</div>
    <ul>
    <li v-for="(item) in val" :key="item">{{item}}</li>
 </ul>
</div>
  </div>
</template>

<script>
export default {
    name: 'randomchose',
    data() {
        return {
            chosenumber: '0',
            inputdata: '',
            val: [],
            getval(arr,count) {
                var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index
                while (i-- > min) {
                    index = Math.floor((i + 1) * Math.random())
                    temp = shuffled[index]
                    shuffled[index] = shuffled[i]
                    shuffled[i]=temp
                }
return shuffled.slice(min)
            }
        }         
    },
    computed: {
        datas() {
        return this.inputdata.split('\n')
    }
},
methods: {
    chosestart() {
        this.val = this.getval(this.datas, this.chosenumber)
        }
    }
}
</script>

<style scope>
.content{
  width:600px;
  height:auto;

margin:0 auto;
position:relative;
text-align: center;
}
.input{
  position: absolute;
  left:0px;
  width:270px;

}
.resultshow{
  position: absolute;
  right:0px;
  width:270px;

}
.start{
    width:160px;
    height: 40px;
    background-color:beige;
    border: none;
    color:blue
}
textarea{resize:none
}
li{
    padding:0px;
    text-align: left

}
</style>

关键:先将用户输入的数据,利用回车作为切割符,转换为数组后,再利用Math.random产生最忌数,来获取数组的下标,再将挑选出来的数据进行显示

2、人生计时器

怎么将date类型的input标签绑v-model的value

?怎么将date类型的input的时间转换为时间戳

?计算时间戳的时候有点迷糊

<template>
  <div class="big">
    <h2 style="text-align:center;">人生计时器</h2>
<h3>选择您的出生日期</h3><br>
    <input type="date" v-model="borndate"><br>
    <button class="start" @click="start">开始查询</button><br>
    <h4 v-show="borndate==''">还未输入出生日期</h4>
    <progress max="100" :value="pro"></progress>
  </div>
</template>

<script>
export default {
    name:'life',
    data() {
        return {
            borndate: '',
            pro:'10'
        }
},
            methods: {
                start() {
                    let date=new Date(this.borndate)
                    var timestamp1 = date.getTime()
                    let totaltimestamp =  31536000000 *80
                    var timestampnow = new Date().getTime()
                    var gaptime = timestampnow - timestamp1
                    this.pro =(totaltimestamp - gaptime) * 100 / totaltimestamp
console.log(this.pro);

        }
    }
}
</script>

<style>
.big{
    width:600px;
    height:600px;
    margin:0 auto;
    font-size:20px;
}
.start{
    width:100px;
    height:30px;
background-color:beige;
border:none
}
input{
    height: 50px;
    font-size:20px;
    margin-bottom: 10px;
}
</style>

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:19:29  更:2022-09-21 00:20:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:33:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码