微信小程序-动态获取view高度

微信小程序-动态获取view高度,第1张

因为对小程序父标签和子标签的布局还不是特别了解,不像ios,父标签固定,子标签通过mansory去布局距离父的底部多少即可。小程序的我能想到的就是动态算出每一个标签的高度,然后总高度减掉就是想得到的子标签的高度了。如果有哪位大神可以指导一二,感激不尽~~~

<view id='viewID'>

<view id="scriptID">

        var query = wxcreateSelectorQuery();

        //选择id

        queryselect('#numID')boundingClientRect()

        queryselect('#scriptID')boundingClientRect()

        queryexec(function (res) {

          //res就是 所有标签为mjltest的元素的信息 的数组

          consolelog('所有:',res);

          //取高度

          thatsetData({

            storyHeight:thatdatadetailHeight -(res[0]height+res[1]height)

          })

        });

到demo1-listde的demo1-listdewxml添加输入框和添加按钮

商品

<input bindinput="getName"></input>

商品价格

<input bindinput="getPrice"></input><!-- 输入框 -->

<button bindtap="addGood" type="primary">添加商品</button><!-- 添加按钮 -->

1

2

3

4

5

1

2

3

4

5

到demo1-listde的demo1-listdewxss添加输入框和添加按钮的样式

input{

border: 1px solid gray;/ 1像素,实心,灰色 /

width: 200px;

}

1

2

3

4

1

2

3

4

保存运行则得到

在这里插入描述

2到demo1-listde的demo1-listdejs

在页面顶端设置全局模式

let name = ''

let price = ''

1

2

1

2

获取用户输入的商品名和价格

getName(n) {

name= ndetailvalue

},

getPrice(n) {

price= ndetailvalue

},

1

2

3

4

5

6

1

2

3

4

5

6

把用户添加的商品添加到数据库

addGood() {

consolelog('商品名', name)

consolelog('商品价格', price)

1

2

3

1

2

3

为了避免代码重复

把下图请添加描述

改为

getList(){

wxclouddatabase()collection("goods")

get()

then(res=> {

consolelog('列表请求成功',res)

thissetData({//把请求的数据赋值给list

list:resdata

})

})

catch(res=> {

consolelog('列表请求失败',err)

})

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

为添加商品制作一个成功或失败提示d窗

if (name == '') {

wxshowToast({//提示d窗

icon:'none',

title: '商品名为空',

})

} else if (price == '') {

wxshowToast({//提示d窗

icon:'none',

title: '价格为空',

})

} else{

consolelog('请添加商品')

wxclouddatabase()collection('goods')

add({

data:{

name: name,

price: price

}

})

then(res =>{

consolelog('添加成功',res)

thisgetList()

})

catch(res =>{

consolelog('添加失败',err)

})

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

保存运行即可在小程序页面添加商品和价格

更改商品价格

1,到demo11-details的demo11-detailswxml添加输入框和添加按钮

<view>商品名:{{goodname}},价格:{{goodprice}}</view><!-- viem默认有换行的效果 -->

更新商品价格

<input bindinput="getPrice"></input>

<button type="primary" bindtap="update">更新商品价格</button>

1

2

3

4

1

2

3

4

到demo11-details的demo11-detailswxss添加输入框和添加按钮的样式

input{

border: 1px solid gray;

width: 200px

}

1

2

3

4

1

2

3

4

保存运行得到

在这里插入描述

2到demo11-details的demo11-detailsjs

在页面顶部添加全局模式

let price = ''

var id = ''

1

2

1

2

把onLoad板块改为

onLoad(options) {//列表携带的数据,传递到了onload方法里

consolelog('列表携带的值',options)

id = optionsid

thisgetDetail()

}

1

2

3

4

5

1

2

3

4

5

为避免下面代码出现重复

把下图的代码

在这里插入描述

改为

getDetail() {

wxclouddatabase()collection('goods')

doc(id)

get()

then(res=> {

consolelog('精品课程详情页请求成功',res)

thissetData({

good:resdata

})

})

catch(res=>{

consolelog('精品课程详情页请求失败',err)

})

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1

2

3

4

5

6

7

8

9

10

11

12

13

14

获取新价格

getPrice(n) {

price=ndetailvalue

}

1

2

3

1

2

3

修改商品的价格

update() {

consolelog('新的商品价格',price)

if (price == '') {

wxshowToast({

icon:'none',

title: '价格为空',

})

} else {

wxclouddatabase()collection('goods')

doc(id)

update({

data:{

price:price

}

})

then(res =>{

consolelog('更新成功',res)

thisgetDetail()

})

catch(res =>{

consolelog('更新失败',err)

})

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

保存运行即可更改商品的价格

删除商品

1,到demo11-details的demo11-detailswxml添加删除按钮

<button type='primary' bindtap="delete">删除当前商品</button>

1

1

2,到demo11-details的demo11-detailsjs

添加删除商品的代码

delete() {

consolelog('点击了删除键',id)

wxshowModal({

title:'提示',

content:'确定要删除这个商品吗',

success(res) {

if (resconfirm) {

consolelog('确定')

//从数据库删除数据

wxclouddatabase()collection('goods')

doc(id)

remove()

then(res => {

consolelog('删除完成',res)

wxnavigateTo({

url: '/pages/demo1-list/demo1-list',

})

})

catch(res=>{

consolelog('删除失败',err)

})

}else if (rescancel) {

consolelog('取消')

}

}

})

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

保存运行即可

完成后的全部代码

demo1-listjs

let name = ''

let price = ''

Page({

onLoad(){

thisgetList()

},

//获取列表数据

getList(){

wxclouddatabase()collection("goods")

get()

then(res=> {

consolelog('列表请求成功',res)

thissetData({//把请求的数据赋值给list

list:resdata

})

})

catch(res=> {

consolelog('列表请求失败',err)

})

},

//跳转到精品课程详情页

toDetail(n) {

consolelog('跳转到精品课程详情页的id',ncurrentTargetdatasetid)

wxnavigateTo({

url: '/pages/demo11-details/demo11-detailsid=' + ncurrentTargetdatasetid,//跳转到商品详情页,并携带商品id

})

},

//获取用户输入的商品名和价格

getName(n) {

name= ndetailvalue

},

getPrice(n) {

price= ndetailvalue

},

//添加商品到数据库

addGood() {

consolelog('商品名', name)

consolelog('商品价格', price)

if (name == '') {

wxshowToast({//提示d窗

icon:'none',

title: '商品名为空',

})

} else if (price == '') {

wxshowToast({//提示d窗

icon:'none',

title: '价格为空',

})

} else{

consolelog('请添加商品')

wxclouddatabase()collection('goods')

add({

data:{

name: name,

price: price

}

})

then(res =>{

consolelog('添加成功',res)

thisgetList()

})

catch(res =>{

consolelog('添加失败',err)

})

}

}

})

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

demo1-listwxml

商品名

<input bindinput="getName"></input>

商品价格

<input bindinput="getPrice"></input><!-- 输入框 -->

<button bindtap="addGood" type="primary">添加商品</button><!-- 添加按钮 -->

<view wx:for="{{list}}">

<view bindtap="toDetail" data-id="{{item_id}}">商品名:{{itemname}},价格:{{itemprice}} </view>

</view>

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

demo1-listwxss

input{

border: 1px solid gray;/ 1像素,实心,灰色 /

width: 200px;

}

1

2

3

4

1

2

3

4

demo11-detailsjs

let price = ''

var id = ''

Page({

data:{

good:{}

},

onLoad(options) {//列表携带的数据,传递到了onload方法里

consolelog('列表携带的值',options)

id = optionsid

thisgetDetail()

},

//获取商品的数据

getDetail() {

wxclouddatabase()collection('goods')

doc(id)

get()

then(res=> {

consolelog('精品课程详情页请求成功',res)

thissetData({

good:resdata

})

})

catch(res=>{

consolelog('精品课程详情页请求失败',err)

})

},

//获取新价格

getPrice(n) {

price=ndetailvalue

},

//修改商品价格

update() {

consolelog('新的商品价格',price)

if (price == '') {

wxshowToast({

icon:'none',

title: '价格为空',

})

} else {

wxclouddatabase()collection('goods')

doc(id)

update({

data:{

price:price

}

})

then(res =>{

consolelog('更新成功',res)

thisgetDetail()

})

catch(res =>{

consolelog('更新失败',err)

})

}

},

delete() {

consolelog('点击了删除键',id)

wxshowModal({

title:'提示',

content:'确定要删除这个商品吗',

success(res) {

if (resconfirm) {

consolelog('确定')

//从数据库删除数据

wxclouddatabase()collection('goods')

doc(id)

remove()

then(res => {

consolelog('删除完成',res)

wxnavigateTo({

url: '/pages/demo1-list/demo1-list',

})

})

catch(res=>{

consolelog('删除失败',err)

})

}else if (rescancel) {

consolelog('取消')

}

}

})

}

})

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

demo11-detailswxml

<!--pages/demo11-details/demo11-detailswxml-->

<view>商品名:{{goodname}},价格:{{goodprice}}</view><!-- viem默认有换行的效果 -->

更新商品价格

<input bindinput="getPrice"></input>

<button type="primary" bindtap="update">更新商品价格</button>

<button type='primary' bindtap="delete">删除当前商品</button>

demo11-detailswxss

1 开发小程序时,每个页面一定要在appjson文件中注册,页面文件夹和其包含的四个文件的名字要保持一致。

2 小程序发起的都是>

以上就是关于微信小程序-动态获取view高度全部的内容,包括:微信小程序-动态获取view高度、云平台小程序中怎么设置价格标签、小程序开发注意事项等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10071840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存