• 微信小程序开发学习——顺序、选择、循环、数学函数


            1.条件语句

    只需在js中写JavaScript的条件语句就行

    math对象:

    代码如下:

    1. <!--pages/tiaojian/tiaojian.wxml-->
    2. <view class="box">
    3. <view class="title">输入x,条件输出y</view>
    4. <view>
    5. <input placeholder='请输入x' type="digit" bindblur="calc"></input>
    6. </view>
    7. <view>输出值y=:{{y}}</view>
    8. </view>
    1. // pages/tiaojian/tiaojian.js
    2. Page({
    3. calc: function(e){
    4. var x,y;
    5. x = e.detail.value;
    6. if(x<0){
    7. y=Math.abs(x);
    8. }
    9. else if(x>=0&&x<10){
    10. y=Math.exp(x) * Math.sin(x);
    11. }
    12. else if(x>=10&&x<20){
    13. y=Math.pow(x,3);
    14. }
    15. else{
    16. y=(3 + 2 * x) * Math.log(x);
    17. }
    18. this.setData({
    19. y: y
    20. })
    21. }
    22. })

    2.button组件和hidden参数

    button组件:

    view中可以加入hidden参数,进行暂时隐藏。具体用法如下完整代码显示:

    1. <!--pages/chengji/chengji.wxml-->
    2. <view class="box">
    3. <view class="title">成绩计算器</view>
    4. <view>
    5. <input placeholder='请输入姓名' placeholder-class="placehoder" type="text" bindblur="nameInput"></input>
    6. </view>
    7. <view>
    8. <input placeholder='请输入语文成绩' placeholder-class="placehoder" type="number" bindblur="yuwenInput"></input>
    9. </view>
    10. <view>
    11. <input placeholder='请输入数学成绩' placeholder-class="placehoder" type="number" bindblur="shuxueInput"></input>
    12. </view>
    13. <button bindtap="mysubmit" class="button">提交</button>
    14. <view hidden="{{flag}}">
    15. <view class="content-item">姓名:{{name}}</view>
    16. <view class="content-item">语文成绩:{{yuwengrade}}</view>
    17. <view class="content-item">数学成绩:{{shuxuegrade}}</view>
    18. <view class="content-item">平均成绩:{{average}}</view>
    19. </view>
    20. </view>
    1. // pages/chengji/chengji.js
    2. Page({
    3. data:{
    4. flag : true,
    5. name : "",
    6. yuwengrade : "",
    7. shuxuegrade : "",
    8. average : ""
    9. },
    10. nameInput:function(e){
    11. this.setData({
    12. name:e.detail.value
    13. })
    14. },
    15. yuwenInput:function(e){
    16. this.setData({
    17. yuwengrade:e.detail.value
    18. })
    19. },
    20. shuxueInput:function(e){
    21. this.setData({
    22. shuxuegrade:e.detail.value
    23. })
    24. },
    25. mysubmit:function(){
    26. if(this.data.name=""||this.data.shuxuegrade==""||this.data.yuwengrade=="")
    27. return;
    28. else{
    29. this.setData({
    30. average:(this.data.shuxuegrade*1+this.data.yuwengrade*1)/2,
    31. flag : false
    32. })
    33. }
    34. }
    35. })

    并且需要注意一点:定义的参数,默认是字符串类型的,如果要变成数型运算,需要*1进行转换。

    3.循环样例

     

    只需在js中写JavaScript的循环语句就行。

    支持的循环类型:

    for/in样例:

    JavaScript全局对象:

    全局变量即定义在所有函数之外的变量,能被该文件的所有函数使用。

    完整代码如下:

    1. <!--pages/xunhuan/xunhuan.wxml-->
    2. <view class="box">
    3. <view class="title">循环计算器</view>
    4. <view>
    5. <input placeholder='请输入起始x' placeholder-class="placehoder" type="number" bindblur="xInput"></input>
    6. </view>
    7. <view>
    8. <input placeholder='请输入截至y' placeholder-class="placehoder" type="number" bindblur="yInput"></input>
    9. </view>
    10. <button type="primary" bindtap="calc" class="button">求和</button>
    11. <view hidden="{{flag}}">
    12. <view class="content-item">结果:{{sum}}</view>
    13. </view>
    14. </view>
    1. // pages/xunhuan/xunhuan.js
    2. var start,end,sum;//定义了全局变量
    3. Page({
    4. xInput:function(e){
    5. start = parseInt(e.detail.value);
    6. },
    7. yInput:function(e){
    8. end = parseInt(e.detail.value);
    9. },
    10. calc:function(){
    11. sum = 0;
    12. for(var i=start;i<=end;i++){
    13. sum = sum+i*1;
    14. }
    15. this.setData({
    16. sum:sum
    17. })
    18. }
    19. })

    4.时钟、回调函数

    实现一个一分钟倒计时计时器。开始计时按钮开始计时,重置按钮恢复60s,停止计时按钮停止计时。

    四个与时钟相关的函数:

    setTimeout(function callback,number delay,any rest)

    callback函数为delay时间结束后执行的一个函数,any rest重置方法。

    clearTimeout(number timeoutID)

    取消由setTimeout设置的计时器,参数timeoutID为要取消的计时器的ID

    setInterval(function callback,number delay,any rest)

    与setTimeout的区别为,setInterval每delay个时间执行一次callback。

    clearInterval(number interval ID)

    取消setInterval设置的计时器。

    代码如下:

    1. <!--pages/jishiqi/jishiqi.wxml-->
    2. <view class="box" hidden="{{hidden}}">
    3. <view class="title">计时器</view>
    4. <view class="time">{{num}}</view>
    5. <view class="btnLayout">
    6. <button bindtap="start">开始计时</button>
    7. <button bindtap="reset">重置</button>
    8. <button bindtap="stop">停止计时</button>
    9. </view>
    10. </view>
    1. // pages/jishiqi/jishiqi.js
    2. var num = 60;
    3. var timerID;
    4. Page({
    5. data:{
    6. hidden:true,
    7. num:num
    8. },
    9. onLoad:function(options){
    10. var that = this;
    11. that.show()
    12. },
    13. show:function(){
    14. var that = this;
    15. that.setData({
    16. hidden :false
    17. })
    18. },
    19. start:function(){
    20. var that = this;
    21. timerID = setInterval(()=>{that.timer()},1000)
    22. },
    23. stop:function(){
    24. clearInterval(timerID)
    25. },
    26. reset:function(){
    27. var that = this;
    28. num = 60;
    29. that.setData({
    30. num:num
    31. })
    32. },
    33. timer:function(){
    34. var that = this;
    35. if(num>0){
    36. that.setData({
    37. num:--num
    38. })
    39. }
    40. else{
    41. that.setData({
    42. num:0
    43. })
    44. }
    45. }
    46. })

    这里我们都用了局部变量that = 初始的this,因为在运行过程中this指向可能改变,因此用that可以避免因为指向改变导致的错误。

    5.使用数组和随机函数

    设计一个小程序用于显示三色旗,当点击按钮时更换三色旗颜色。

    直接上代码就能理解:

    1. <!--pages/suijiflag/suijiflag.wxml-->
    2. <view class="box">
    3. <view class = "title">随机三色旗</view>
    4. <view class = "flex-warp">
    5. <view class="item" style="background-color:{{color1}}"></view>
    6. <view class="item" style="background-color:{{color2}}"></view>
    7. <view class="item" style="background-color:{{color3}}"></view>
    8. </view>
    9. <button type="primary" class="btn" bindtap="changecolor">改变颜色</button>
    10. </view>
    1. // pages/suijiflag/suijiflag.js
    2. Page({
    3. createColor:function(){
    4. var color = [];//定义数组
    5. var letters = "0123456789ABCDEF";
    6. for(var i=0;i<3;i++){
    7. var c = "#";
    8. for(var j=0;j<6;j++){
    9. c += letters[Math.floor(Math.random()*16)];
    10. }
    11. color.push(c);
    12. }
    13. this.setData({
    14. color1:color[0],
    15. color2:color[1],
    16. color3:color[2]
    17. })
    18. },
    19. onLoad:function(options){
    20. this.createColor();
    21. },
    22. changecolor:function(){
    23. this.createColor();
    24. }
    25. })
  • 相关阅读:
    mongodb 入门笔记
    C++ String类的简单实现(非模板)
    使用iperf3测试网络带宽
    Oracle语句深入了解Day02
    ElasticSearch集群的搭建
    CC57 链表内指定区间反转
    网络安全-学习手册
    13、深度学习之神经网络
    高级深入--day23
    EDA国产化之路,路在何方?
  • 原文地址:https://blog.csdn.net/u011708235/article/details/134540868