• 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);
    }

    1. <template>
    2. <div class="content">
    3. <h1>随机选择器</h1>
    4. <p>选择个数:<input type="text" placeholder="请输入需要选择的个数" v-model="chosenumber"></p>
    5. <button class="start" @click="chosestart">佛系选择开始</button>
    6. <div v-show="inputdata==''">请输入数据</div>
    7. <div v-show="chosenumber>datas.length">选择个数超过总的选择</div>
    8. <div class="input"><div>输入框:</div>
    9. <textarea name="" id="" cols="30" rows="10" placeholder="输入数据以回车分割" v-model="inputdata" ></textarea></div>
    10. <div class="resultshow">
    11. <div>最终结果显示:</div>
    12. <ul>
    13. <li v-for="(item) in val" :key="item">{{item}}</li>
    14. </ul>
    15. </div>
    16. </div>
    17. </template>
    18. <script>
    19. export default {
    20. name: 'randomchose',
    21. data() {
    22. return {
    23. chosenumber: '0',
    24. inputdata: '',
    25. val: [],
    26. getval(arr,count) {
    27. var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index
    28. while (i-- > min) {
    29. index = Math.floor((i + 1) * Math.random())
    30. temp = shuffled[index]
    31. shuffled[index] = shuffled[i]
    32. shuffled[i]=temp
    33. }
    34. return shuffled.slice(min)
    35. }
    36. }
    37. },
    38. computed: {
    39. datas() {
    40. return this.inputdata.split('\n')
    41. }
    42. },
    43. methods: {
    44. chosestart() {
    45. this.val = this.getval(this.datas, this.chosenumber)
    46. }
    47. }
    48. }
    49. </script>
    50. <style scope>
    51. .content{
    52. width:600px;
    53. height:auto;
    54. margin:0 auto;
    55. position:relative;
    56. text-align: center;
    57. }
    58. .input{
    59. position: absolute;
    60. left:0px;
    61. width:270px;
    62. }
    63. .resultshow{
    64. position: absolute;
    65. right:0px;
    66. width:270px;
    67. }
    68. .start{
    69. width:160px;
    70. height: 40px;
    71. background-color:beige;
    72. border: none;
    73. color:blue
    74. }
    75. textarea{resize:none
    76. }
    77. li{
    78. padding:0px;
    79. text-align: left
    80. }
    81. </style>

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

    2、人生计时器

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

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

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

    1. <template>
    2. <div class="big">
    3. <h2 style="text-align:center;">人生计时器</h2>
    4. <h3>选择您的出生日期</h3><br>
    5. <input type="date" v-model="borndate"><br>
    6. <button class="start" @click="start">开始查询</button><br>
    7. <h4 v-show="borndate==''">还未输入出生日期</h4>
    8. <progress max="100" :value="pro"></progress>
    9. </div>
    10. </template>
    11. <script>
    12. export default {
    13. name:'life',
    14. data() {
    15. return {
    16. borndate: '',
    17. pro:'10'
    18. }
    19. },
    20. methods: {
    21. start() {
    22. let date=new Date(this.borndate)
    23. var timestamp1 = date.getTime()
    24. let totaltimestamp = 31536000000 *80
    25. var timestampnow = new Date().getTime()
    26. var gaptime = timestampnow - timestamp1
    27. this.pro =(totaltimestamp - gaptime) * 100 / totaltimestamp
    28. console.log(this.pro);
    29. }
    30. }
    31. }
    32. </script>
    33. <style>
    34. .big{
    35. width:600px;
    36. height:600px;
    37. margin:0 auto;
    38. font-size:20px;
    39. }
    40. .start{
    41. width:100px;
    42. height:30px;
    43. background-color:beige;
    44. border:none
    45. }
    46. input{
    47. height: 50px;
    48. font-size:20px;
    49. margin-bottom: 10px;
    50. }
    51. </style>

     

  • 相关阅读:
    【C++】笔试训练(五)
    pytest+allure 详细版
    Ajax 获取 JSON数据
    oracle 正则表达式多项匹配时,相似项有优先级
    【QCustomPlot】下载
    ESP32网络开发实例-HTTP-POST请求
    【WinCC动画控件 Industrial Gadgets ActiveX Pro 安装与使用】
    java: 错误: 无效的源发行版:17
    Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
    Node.js 入门教程 22 将所有 Node.js 依赖包更新到最新版本
  • 原文地址:https://blog.csdn.net/qq_45387575/article/details/126941675