ExpOS技术社区

 找回密码
 立即注册

快捷登录

QQ登录

只需一步,快速开始

查看: 708|回复: 2

利用eval()方法批量设置控件属性

[复制链接]

24

主题

43

帖子

248

积分

版主

Rank: 7Rank: 7Rank: 7

积分
248
发表于 2020-5-21 09:15:22 | 显示全部楼层 |阅读模式
本帖最后由 hixon 于 2020-5-21 09:31 编辑

有时我们需要对界面上多个相同类型的控件属性进行修改,我们除了一行一行代码对他们进行修改,还有没有更好的办法?下面就来介绍下怎么利用JavaScript的eval方法来实现。
js_eval.png

下面我们举例说明一下eval怎么使用:如下图,页面上有4个按钮,在页面onLoad的时候把它们初始化成下面的效果
multiple_button_simulator.png

1、首先我们看一下只修改一个按钮的情况
single_button_setprop.png
模拟运行
single_button_simulator.png

2、我们利用eval()方法来实现多个按钮的属性修改
miltiple_button_setprop.png
模拟运行,就是我们想要的效果了


注意: JavaScript中单引号和双引号都可以表示字符串,如 'abc' 和 "abc"是一样的。所以在使用eval()方法的时候,如果原始语句中用的单引号,就用eval双引号来包含, 要不然语法会有错误!

原始语句: ui.main.textButton_1.text = 'abc'; // 单引号
eval()语句:eval("ui.main.textButton_1.text = 'abc';"); // eval双引号

原始语句: ui.main.textButton_1.text = "abc"; // 双引号
eval()语句:eval('ui.main.textButton_1.text = "abc";'); // eval单引号






回复

使用道具 举报

24

主题

43

帖子

248

积分

版主

Rank: 7Rank: 7Rank: 7

积分
248
 楼主| 发表于 2020-5-21 09:37:31 | 显示全部楼层
当然我们也可以使用数组来实现,如:
var buttonArray = [ui.main.textButton_1, ui.main.textButton_2, ui.main.textButton_3, ui.main.textButton_4];
for (var i=0; i<4; i++) {
    buttonArray[i].text = '测试-' + (i + 1);
    buttonArray[i].textColor = '#ff0000';
}
回复

使用道具 举报

6

主题

37

帖子

300

积分

超级版主

Rank: 8Rank: 8

积分
300
发表于 2020-5-21 13:17:02 | 显示全部楼层
我更喜欢数组方式,不过eval()确实很有用,能动态生成javascript代码执行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|物一世(北京)科技有限公司 ( 京ICP备20025895 )

GMT+8, 2020-8-16 00:48 , Processed in 0.112714 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表