1. 程式人生 > >使用js過程中遇到的小問題總結(隨使用情況不斷新增)

使用js過程中遇到的小問題總結(隨使用情況不斷新增)

(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(); })