您的位置:首页 > Web前端 > JavaScript

使用js过程中遇到的小问题总结(随使用情况不断添加)

2014-11-02 19:53 656 查看
(1)拼接相同的两个json串

开发遇到问题背景:

在查询中使用combobox等easyui的控件,其data数据是由后台取得的,默认想在取得的数据加上(---全部---)这样的字样(本来可以在后台直接添加的,但是在新增弹框中还会用到这组数据,而这个时候就不需要有这个字样了,如果做两次这样的数据实在是浪费时间跟效率),所以我想在取得数据后抛到前台后再做处理。于是有了将两个类型相同的json串拼接在一起的需求。网上有人提出建一个数组,然后遍历这两个的元素放进去,再一种方法就是直接以处理字符串的方式拼接,然后重新生成json串。不过,我发现js数组里有unshif这二个方法,这个方法是向数组头部添加一个或者多个元素。所以我就有了一下想法:

function test(){
var s = eval("[{id:'',text:'--全部--'}]");
var result = "[{id:'001',text:'组1'},{id:'002',text:'组2'},{id:'003',text:'组3'}]";//实际开发中,这个数据是由后台提供的
var test = eval(result);
test.unshift(s[0]);
var dddd = JSON.stringify(test);
}
得到的结果就是:
[{"id":"","text":"--全部--"},{"id":"001","text":"组1"},{"id":"002","text":"组2"},{"id":"003","text":"组3"}]
(2)js前台处理数字的保留精度

在使用C#处理数字并向前台返回数字的时候,我都是省事的用了.toString("0.00")方法来取的,但是由于这样向前台传的只是一个展示的数据,如果在前台想操作这个数据的时候就会有问题(例如,在你修改这个数据的时候,如果你取的是前台的数据去填充原来的框,那么就会出现问题了),为了让前台取得的数据跟数据库里的一致而又让前台保留两位小数的需求,那么我就把数据抛到前台来处理进行展示了。那么就又成了前台js需要做的事情了。

从网上获取的资料是有toFixed()方法。刚开始我直接用了前台的值去调用这个方法,发现点后没有提示,仔细看之后这是js中Number对象的一个方法,所以先将值为数字的变量转为number类型的,然后再去调用该方法,那么就实现了保留精度的需求了。

function showmoney(value) {
if (value != undefined) {
var result = new Number(value);
return result.toFixed(2);
}
else
return "";
}

(3)在页面打开之前加遮罩

//show load
(function () {
try {
$("<div class=\"datagrid-mask\"></div>").css({ 'z-index': 9999, opacity: 100, filter: 'alpha(opacity=100)', display: "block", width: "100%", height: $(window).height() }).appendTo("body");
$("<div class=\"datagrid-mask-msg\"></div>").html("正在努力加载中,请稍候...").appendTo("body").css({ 'z-index': 10000, display: "block", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
} catch (ex) { }
})();
//hidden Load
function dispalyLoad() {
try {
$(".datagrid-mask").remove();
$(".datagrid-mask-msg").remove();
} catch (ex) { }
}
$(document).ready(function () { dispalyLoad(); })
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: