zoukankan      html  css  js  c++  java
  • 微信小程序开发入门(六)

    一、条件语句和数学函数的使用  案例:

    y=|x| (x<0)

    y=e的x次方*sinx  (0<=x<10)

    y=x的3次方  (10<=x<20)

    y=(3+2*x)lnx   (x>=20)

    <!--index.wxml-->
    <view class='box'>
      <view class="title">条件语句和数学函数</view>
      <view>
        <input placeholder="请输入x的值" bindblur="calc"></input>
      </view>
      <view>计算y的值为:{{y}}</view>
    </view>
    /* pages/index/index.wxss */
    
    input {
      margin: 20px 0; /*设置input组件上下边距为20px,左右边距为0*/
      border-bottom: 1px solid blue; /*设置input组件下边框粗细为1px、实心、蓝色*/
    }
    
    //index.js
    
    Page({
      //事件处理函数
      calc:function(e){
        var x, y;//定义局部变量x和y
        x = e.detail.value;//获取input组件的value值并赋值给x
        if(x<0){//根据x值进行判断,并求出y的值
        y = Math.abs(x);
        }else if(x<10){
          y=Math.exp(x)*Math.sin(x);
        }else if(x<20){
          y=Math.pow(x,3);
        }else{
          y=(3+2*x)*Math.log(x);
        }
        this.setData({
          y:y//将局部变量y赋值给绑定变量y,把y的值通过setData函数返回到wxml文件,也就是视图层
        })
      }
    })

    二、JavaScript 中的逻辑运算符 &&button组件的使用方法  案例:学生成绩平均分计算

    <!--index.wxml-->
    <view class='box'>
      <view class='title'>成绩计算器</view>
      <!--placeholder-class设置提示文本样式,在wxss里面定义,样式名placeholder;bindinput输入时引发的事件,调用的nameInput函数;type='number'整数,输入时弹出不带小数点的数字键盘-->
      <input placeholder="请输入你的名字" placeholder-class="placeholder" bindinput='nameInput'></input>
      <input placeholder="请输入语文成绩" placeholder-class="placeholder" bindinput='chineseInput' type='number'></input>
      <input placeholder="请输入数学成绩" placeholder-class="placeholder" bindinput='mathInput' type='number'></input>
      <!--bindtap点击按钮事件对应的事件函数mysubmit,js中定义-->
      <button bindtap='mysubmit'>提交</button>
      <!--hidden属性对应的flag,默认是true,隐藏的,通过flag控制下方区域是否显示;整体的布局和样式用的content-->
      <view hidden='{{flag}}' class='content'>
        <!--内嵌了四个view组件,对应的样式属性content-item;{{name}}数据的绑定-->
        <view class='content-item'>姓名:{{name}}</view>
        <view class='content-item'>语文成绩:{{chinese_score}}</view>
        <view class='content-item'>数学成绩:{{math_score}}</view>
        <view class='content-item'>平均分:{{avrage}}</view>
      </view>
    </view>
    /* pages/index/index.wxss */
    
    page {/* 针对整个页面*/
      background: #f1f0f6;
    }
    
    .placeholder {/* 占位符文字样式*/
      font-size: 15px;
    }
    
    input {/* input组件样式*/
      background: #fff;
      height: 120rpx;
      margin: 10px;/*边距*/
      padding-left: 8px;/* 左内边距*/
      border: solid 1px silver;
    }
    
    button {
      margin: 30rpx 50rpx;
      background-color: red;
      color: white;/*文本颜色*/
    }
    
    .content {
      background: #fff;
      padding: 10px;
      color: #f00;
    }
    
    .content-item {
      padding: 3rpx;
      font-size: 16px;
      line-height: 30px;
    }
    //index.js
    Page({
      /**
       * 页面的初始数据
       */
      data: {
        /**flag: true下面显示结果的区域不显示;绑定的数据一开始都是没有数值的*/
        flag: true,
        name: '',
        chinese_score: '',
        math_score: '',
        avrage: ''
      },
      //事件绑定函数
      nameInput: function(e) {
        this.setData({
          name: e.detail.value
        });
      },
      chineseInput: function(e) {
        this.setData({
          chinese_score: e.detail.value
        });
      },
      mathInput: function(e) {
        this.setData({
          math_score: e.detail.value
        });
      },
      mysubmit: function() {
        if (this.data.name == '' || this.data.chinese_score == '' || this.data.math_score == '') {
          return;
        } else {
          //*1是为了字符变数字,一开始输入的数字默认是字符类型,如果不乘1,就是字符串相加,结果就不对了
          var avg = (this.data.chinese_score * 1 + this.data.math_score * 1) / 2;
          this.setData({
            avrage: avg,
            flag: false
          });
        }
      }
    })

     button组件—常用属性 

    属性合法值 

    三、JavaScript循环语句的执行过程 &&JavaScript中全局对象函数的使用方法 &&全局变量的定义和使用方法  案例:利用循环语句求两个整数间数字之和

    <!--index.wxml-->
    <view class='box'>
      <view class='title'>利用循环语句求和</view>
      <view>
        <input placeholder='请输入起点数值' type='number' bindblur='startNum'></input>
        <input placeholder='请输入终点数值' type='number' bindblur='endNum'></input>
      </view>
      <view>两个数之间的和为:{{sum}} </view>
      <button type='primary' bindtap='calc'>求和</button>
    </view>
    /* pages/index/index.wxss */
    
    input {
      border-bottom: 1px solid blue; /* 添加input组件的下边框线 */
      margin: 20px 0; /* input组件上下外边距为20px,左右外边距为0 */
    }
    
    button {
      margin-top: 20px; /* 设置button组件的上边距为20px */
    }
    //index.js
    var start, end, sum; //定义起点数、终点数和求和结果三个全局变量
    Page({
      startNum: function(e) {
        start = parseInt(e.detail.value); //将input组件value值转换为整数并赋值,默认输入的是字符类型
      },
      endNum: function(e) {
        end = parseInt(e.detail.value); //将input组件value值转换为整数并赋值
      },
      calc: function() {
        sum = 0;
        for (var i = start; i <= end; i++) {
          sum = sum + i; //利用for循环求和
        }
        this.setData({
          sum: sum //将全局变量sum的值渲染到视图层
        })
      }
    })

    JavaScript 支持的循环类型包括:

    for:多次遍历代码块

    for/in:遍历对象属性

    while:当指定条件为 true 时循环一段代码块

    do/while:当指定条件为 true 时循环一段代码块 

    for 循环—语法

      for (语句 1; 语句 2; 语句 3)

        {     

        要执行的代码块

        }

      语句 1 在循环(代码块)开始前执行

      语句 2 定义运行循环(代码块)的条件

      语句 3 在循环(代码块)已被执行之后执行 

    for/in 循环—样例
      循环遍历对象的属性。例如:

    var person =  {fname:"Bill", lname:"Gates",age:62};  var text = ""; for (var x in person) {     text += person[x]; } 

      循环结束后,text的值为:"BillGates62" 

    while 循环—语法
      在指定条件为真时循环执行代码块。语法为: while (条件) { 要执行的代码块 }
    do/while 循环—语法 
      do { 要执行的代码块 } while (条件); 

    JavaScript全局对象

      可用于所有内建的 JavaScript 对象,其常用 属性和方法如表所示

      

    全局变量的定义和使用 

      在所有函数之外定义的变量称为全局变量,该变量可以在该文件的所有函数中使用。

    四、对象的概念 &&JavaScript中Array对象函数的使用方法&&Number对象函数的使用方法  案例:随机数求和 

    <!--index.wxml-->
    <view class="box">
      <view class='title'>随机数求和</view>
      <view>产生的随机数列为:</view>
      <!--通过一个列表渲染,rand是从js文件中传过来的一个数组,item显示的数组中每一个元素的值-->
      <view wx:for="{{rand}}">{{item}}</view>
      <view>随机数列的和为:{{sum}}</view>
      <button type='primary' bindtap='newRand'>产生新的随机数</button>
    </view>
    //index.js
    var rand, sum;//定义全局变量
    function createRand() {//自定义的全局函数
      rand = []; //初始化数组变量
      sum = 0; //初始化sum变量
      for (var i = 0; i < 6; i++) {
        var r = (Math.random() * 100).toFixed(2) * 1; //产生100以内的保留小数点后2位的随机数并转换为数值类型;Math.random() 产生0-1的随机数,*100,0-100的随机数,toFixed(2)产生的随机数保留后两位小数,默认产生的字符类型,*1,变成数值类型
        rand.push(r); //将产生的随机数添加到数组中
        sum += rand[i]; //随机数列求和
        console.log(rand[i]); //在控制台显示数组元素
      }
      console.log(sum);
    };
    
    Page({
      onLoad: function () {
        createRand(); //调用产生随机数函数;一开始运行的时候就显示了一系列数组元素,因为在onLoad里直接调用了createRand函数,然后把函数元素直接发送到视图层,然后在这边显示了,这样把逻辑层的rand和sum直接渲染到了wxml文件。
        this.setData({
          rand: rand,
          sum: sum
        })
      },
      newRand: function () {
        createRand(); //调用产生随机数函数
        this.setData({
          rand: rand,
          sum: sum
        })
      }
    })

    对象的概念 

       对象是拥有属性和方法的数据,属性是静态数据, 方法是能够在对象上执行的动作,即动态数据。 

      JavaScript 中的常用对象包括:字符串、数字、    数组、日期,等等。 

    Array 对象 

      用于在单个的变量中存储多个值,其常用属性和方法如表所示

      

      

    Number 对象 

      该对象是原始数值的包装对象,其常用属性和方法如表所示

      

      

    五、setTimeout()的使用方法&&clearTimeout()的使用方法&&setInterval()的使用方法&&clearInterval()的使用方法 案例:计时器 

    案例描述 :

    设计一个实现倒计时功能的小程序,小程序运行后,首先显示空白界面,过2秒后才显示计时界面,点击“开始计时”按钮后开始倒计时,点击“停止计时”按钮后停止计时。 

    <!--index.wxml-->
    <view class='box' hidden='{{hidden}}'>
      <view class='title'>计时器</view>
      <view class='time'>{{num}}</view>
      <view class='btnLayout'>
        <button bindtap='start'>开始计时</button>
        <button bindtap='stop'>停止计时</button>
      </view>
    </view>
    /* pages/index/index.wxss */
    
    .time {
      width: 90%;
      line-height: 200px; /* 设置高度并使文字垂直居中 */
      background-color: yellow;
      color: red;
      font-size: 100px;
      text-align: center;
      border: 1px solid silver;
      border-radius: 30px; /*边框半径, 四个圆角过渡 */
      margin: 15px;
    }
    
    .btnLayout {
      display: flex;
      flex-direction: row;
    }
    
    button {
      width: 45%;
    }
    //index.js
    
    var num = 60; //计时器显示的数字
    var timerID; //计时器ID
    Page({
      data: {
        hidden: true, //小程序运行时不显示计时界面
        num: num //将全局变量赋值给绑定变量
      },
    
      onLoad: function (options) {//程序一加载就调用这个函数
        var that = this;//setTimeout函数中用到了回调函数"() => {that.show()}",回调函数一调用,有可能改变this的值,因此要把this赋值给that
        setTimeout(() => {
          that.show()
        }, 2000) //2秒钟后显示计时界面;程序一加载,2秒钟后调用回调函数() => {that.show()}只调用一次,回调函数中调用了show函数
      },
    
      show: function () { //显示计时界面函数
        var that = this;
        that.setData({
          hidden: false //显示计时界面
        })
      },
    
      start: function () { //开始计时函数
        var that = this;
        timerID = setInterval(() => {
          that.timer()
        }, 1000) //每隔1s调用一次timer函数;第一个参数是回调函数,第二个参数是时间
      },
    
      stop: function () { //停止计时函数
        clearInterval(timerID) //清除计时器
      },
    
      timer: function () { //计时函数
        var that = this;
        console.log(num)
        if (num > 0) {
          that.setData({
            num: num-- //每次减1
          })
        } else {
          that.setData({
            num: 0
          })
        }
        console.log(num)
      }
    
    })
    /**app.wxss**/
    .box{
      border: 1px solid silver;
      margin: 10rpx;
      padding: 20rpx;
    }
    .title{
    font-size: 25px;
    text-align: center;
    margin-bottom: 15px;
    color: rgb(241, 143, 143);
    }

    JavaScript中的4个函数: 

    setTimeout()函数

      setTimeout(function callback, number delay, any rest)。设定一个计时器,在计时到期以后执行注册的回调函数。隔一定时间后只执行一次

      返回值是number,第一个参数回调函数,第二个参数设定的时间间隔,第三个参数任意类型的rest,附近的参数,可以有多个

    clearTimeout() 函数

      clearTimeout(number timeoutID)。取消由 setTimeout 设置的计时器。参数 timeoutID为 要取消的计时器的 ID。 
    setInterval() 函数

      setInterval(function callback, number delay, any rest)。设定一个计时器,按照指定的周期(以毫秒计)来执行注册的回调函数。 每隔一定时间要执行一次

      返回值是number
    clearInterval()函数

      clearInterval(number intervalID)。取消 由 setInterval 设置的计时器。参数 intervalID为要取消的计时器的ID。 

    六、综合运用双重for循环、数组、 Math函数、全局对象函数等  案例:自动随机变化的 三色旗 

    案例描述:设计一个小程序,开始时界面上显示一个三色旗和一个按钮,当点击按钮时,三色旗的颜色会发生随机变化,即使不点击按钮,三色旗的颜色也会每隔一定时间自动发生变化。

    创建随机颜色的设计思想:从构成颜色的16个16进制 字符(0~F)中随机随机找出6个字符构成一种颜色, 连续找3次就可以生成3种随机颜色。

    <!--index.wxml-->
    <view class="box">
      <view class='title'>变化的三色旗</view>
      <view class="flex-wrp">
        <view class="item" style="background-color:{{color1}}"></view>
        <view class="item" style="background-color:{{color2}}"></view>
        <view class="item" style="background-color:{{color3}}"></view>
      </view>
      <button type='primary' class='btn' bindtap="changeColor">改变颜色</button>
    </view>
    /**app.wxss**/
    .box{
      border: 1px solid silver;
      margin: 20rpx;
      padding: 20rpx;
    }
    .title{
    font-size: 25px;
    text-align: center;
    margin-bottom: 15px;
    color: rgb(241, 143, 143);
    }
    /* pages/index/index.wxss */
    .flex-wrp{
      margin-top: 50rpx;
      display:flex;
      flex-direction: row;
    }
    .item{
      width: 300rpx;
      height: 500rpx;  
    }
    .btn{
      margin-top: 20rpx;
      margin-bottom: 20rpx;
      width: 100% !important;
    }
    //index.js
    
    Page({
      createColor: function () { //自定义函数,创建三种随机颜色
        var color = []; //定义数组
        var letters = '0123456789ABCDEF'; //定义16进制颜色字符集
        for (var i = 0; i < 3; i++) { //利用循环创建三种随机颜色
          var c = '#';
          for (var j = 0; j < 6; j++) { //创建一种由6个16进制字符构成的随机颜色
            c += letters[Math.floor(Math.random() * 16)]
          }
          color.push(c); //将创建的颜色加入颜色数组
        }
        console.log(color); //在console面板中显示颜色值
        this.setData({ //将创建的颜色渲染到视图层
          color1: color[0],
          color2: color[1],
          color3: color[2]
        })
      },
    
      onLoad: function (e) {//onLoad生命周期函数
        this.createColor(); //利用this调用本类定义的函数
        setInterval(() => { //每隔5秒钟调用一次this.createColor()函数
          this.createColor();
        }, 5000);
      },
    
      changeColor: function (e) { //点击按钮时的事件函数
        this.createColor();
      }
    })
    Math.random() * 16:0到16之间,不包括16的浮点数
    Math.floor(Math.random() * 16):0到16之间,不包括16的整数。即0-15
  • 相关阅读:
    关于MOTO E2
    Visual Studio 2008 SDK 1.1 Beta 发布
    开始了新的工作
    C# 2.0 的"语法多义性"
    最近画的框架草图
    SQL数据库向ORACLE迁移注意事项
    C#中很多新的特性,提供了更好的“即兴编程”的能力。
    看了点lua相关的东西,有点想法不知能否实现?先记下来慢慢思考。
    读《企业应用架框模式》
    porting cinvoke1.0 to E2 (armlinux)
  • 原文地址:https://www.cnblogs.com/suitcases/p/13360935.html
Copyright © 2011-2022 走看看