01-2 比较数值大小

本文详细介绍了微信小程序中如何通过WXML和WXSS构建页面结构,以及使用JavaScript处理输入事件,实现两个数值的比较。作者展示了五种方法来获取和比较用户输入,包括通过事件触发、ID获取、dataset、条件渲染和表单提交。
摘要由CSDN通过智能技术生成

01-2案例:比较数值大小

效果如图:

在这里插入图片描述

分析页面组成和页面样式

可得知能够细分为如下结构:

在这里插入图片描述

  • view1和view2代码相同:

​ wxml主要部件:text、input

​ wxss主要部件:border-bottom

  • button按钮

​ wxss主要部件:background-color

​ (或者导入外样式@import “xx.wxss”)

  • view3

​ wxml主要部件:text

代码如下:

<!--index.wxml-->

<view class="container">
    <!-- view1/2 -->
    <view>   
        <text>请输入第1个数字:</text>   
        <input type="number"/> 
    </view> 
    <view>   
        <text>请输入第2个数字:</text>   
        <input type="number"/> 
    </view> 
    <!-- button -->
    <button>比较</button> 
    <!-- view3 -->
    <view>   
        <text>比较结果:</text>
    </view>

</view>
/*index.wxss*/

view{
    margin : 60rpx
}
input{
    border-bottom: 3rpx solid rgb(255, 168, 168);
    width: 600rpx;
    margin-top: 20rpx;
}
button{
    margin: 60rpx;
    background-color: rgba(114, 111, 207, 0.555);
}

/* 外部样式导入 
	@import "t.wxss"
*/
/* 
    页面内样式:写在当前页面,只对此页面有影响
    外部样式:需单独定义一个文件且要在wxss里进行导入
    全局样式:app.wxss文件中,所有页面共享此样式
	(就近原则)
*/
//index.JSON
{
    "navigationBarTitleText": "数值比较",
    "navigationBarBackgroundColor": "#00F"
}

<页面基础完成>

功能完善(5种方法)

  • button

​ 注册点击事件:bindtap

​ (可在js里写入compare()函数查看按钮是否被点击)

<button bindtap="compare">比较</button>
  • e.target.id:获取子元素id [获取的是当前点击标签对象的id]

    e.currentTarget.id:获取父元素id

    • target:触发事件的源组件(本身)

    • currentTarge:事件绑定的当前组件(父)

1.绑定不同事件

实现思路:输入不同的数据触发改变事件,使用改变事件获取到用户输入值的两个值,之后点击比较按钮比较2个值bindchange 改变事件,输入框失去焦点就会触发事件函数

<!--.wxml-->
<view>
    <text>请输入第1个数字:</text>
    <input type="number" bindchange="num1Change"/>
</view>
<view>
    <text>请输入第2个数字:</text>
    <input type="number" bindchange="num2Change"/>
</view>
<button bindtap="compare">比较</button>
<view>
    <text>比较结果:{{result}}</text>
    <!--{{result}}是一个表达式,用于获取js文件中data属性里面的数据进行绑定展现-->
</view>
//.js
Page({
    data: {
        result:"" // 用于存储比较结果
    },
    num1:0, // 保存第1个数
    num2:0, // 保存第2个数
    ...,

    compare(){
    var str = "两数相等"
    if(this.num1 > this.num2){
        str = "第1个数大"
    }else if(this.num1 < this.num2){
        str = "第2个数大"
    }
    this.setData({
        result: str
    })
},

    num1change(e){
        this.num1 = Number(e.detail.value)
    },
        num2change(e){
            this.num2 = Number(e.detail.value)
        },
})

2.通过id获取元素方式

实现思路:通过定义id获取数据

<!--.wxml-->
<view>
    <text>请输入第1个数字:</text>
    <input type="number" bindchange="change" id="num1"/>
</view>
<view>
    <text>请输入第2个数字:</text>
    <input type="number" bindchange="change" id="num2"/>
</view>
//.js 
change(e){
    this[e.target.id] = e.detail.value
  },

3.通过dataset获取元素方式

实现思路:修改id为data-id属性,事件名修改为change2

<view>
    <text>请输入第1个数字:</text>
    <input type="number" bindchange="change2" data-id="num1"/>
</view>
<view>
    <text>请输入第2个数字:</text>
    <input type="number" bindchange="change2" data-id="num2"/>
</view>
change2(e){
	this[e.target.dataset.id] = e.detail.value
  }

4.if条件渲染

实现思路:通过渲染的方式比较大小

<view>
    <text wx:if="{{num1 > num2}}">比较结果:第1个数大</text>
    <text wx:elif="{{num1 < num2}}">比较结果:第2个数大</text>
    <text wx:else>比较结果:两数相等</text>
</view>
data: {
    result:"", // 用于存储比较结果
    num1:0, // 保存第1个数(新增)
    num2:0, // 保存第2个数(新增)
},
  	num1:0, // 保存第1个数
    num2:0, // 保存第2个数
  
  change3(e){
    var data={}
    data[e.target.dataset.id] = Number(e.detail.value)
    this.setData(data)
  }

5.表单获取值

实验思路:通过表单获取input组件的值,比较结果

<form bindsubmit="formCompare">
    <view>
        <text>请输入第1个数字:</text>
        <input type="number" bindchange="change3" data-id="num1" name="num1"/>
    </view>
    <view>
        <text>请输入第2个数字:</text>
        <input type="number" bindchange="change3" data-id="num2" name="num2"/>
    </view>
    <button bindtap="compare" form-type="submit">比较</button>
</form>
<view>
    <text>比较结果:{{result}}</text>
</view>
formCompare(e){
    var str = "两数相等"
    if(e.detail.value.num1 > e.detail.value.num2){
        str = "第1个数大"
    }else if(e.detail.value.num1 < e.detail.value.num2){
        str = "第2个数大"
    }
    this.setData({
        result: str
    })
}

(–END–)

  • 31
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值