现在的位置: 首页 > 综合 > 正文

JS 框架设计点滴

2013年05月22日 ⁄ 综合 ⁄ 共 4665字 ⁄ 字号 评论关闭

/**
* =====================================================================================
* =====================================================================================
*/
/**
* @版本  v1.1
* @作者  林松斌
* @时间  2009-01-12
*/
/**
* =====================================================================================
* 功能函数
* =====================================================================================
*/

//字符串连接
function StringBuffer() {
    this._string = new Array;
}

StringBuffer.prototype.append = function(str) {
    return this._string.push(str);
}

StringBuffer.prototype.toString = function() {
    return this._string.join("");
}

//取得参数
function QueryString(item) {
    var sValue = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"))
    return sValue ? sValue[1] : sValue
}

//字符串截取
function SubString(str, len, hasDot) {
    var newLength = 0;
    var newStr = "";
    var chineseRegex = /[^\x00-\xff]/g;
    var singleChar = "";
    var strLength = str.replace(chineseRegex, "**").length;
    for (var i = 0; i < strLength; i++) {
        singleChar = str.charAt(i).toString();
        if (singleChar.match(chineseRegex) != null) {
            newLength += 2;
        }
        else {
            newLength++;
        }
        if (newLength > len) {
            break;
        }
        newStr += singleChar;
    }

    if (hasDot && strLength > len) {
        newStr += "...";
    }
    return newStr;
}

//设置参数
function SetParms(page) {
    var myData = "action=GetPageData" +
                 "&TableName=" + page.TableName +
                 "&FieldList=" + page.FieldList +
                 "&PrimaryKey=" + page.PrimaryKey +
                 "&StrWhere=" + page.StrWhere +
                 "&StrOrder=" + page.StrOrder +
                 "&PageSize=" + page.PageSize +
                 "&PageIndex=" + page.PageIndex +
                 "&ts=" + new Date().getTime();
    return myData;
}

/**
* =====================================================================================
* =====================================================================================
*/

//分页类
function Page(TableName, FieldList, PrimaryKey, StrWhere, StrOrder, PageSize, PageIndex) {
    this.TableName = TableName;
    this.FieldList = FieldList;
    this.PrimaryKey = PrimaryKey;
    this.StrWhere = StrWhere;
    this.StrOrder = StrOrder;
    this.PageSize = PageSize;
    this.PageIndex = PageIndex;
}

//分页工厂
function PageFactory(type) {
    var page = new Page();
    switch (type) {
        case "hotAffairs":
            page.TableName = "NE_news";
            page.FieldList = "NewsId, Title";
            page.PrimaryKey = "NewsId";
            page.StrWhere = "";
            page.StrOrder = "NewsId DESC";
            page.RecorderCount = 0;
            page.PageSize = 10;
            page.PageIndex = 1;
            break;
    }

    return page;
}

//创建热点新闻工厂
var page_hotAffairs = new PageFactory("hotAffairs");

/**
* =====================================================================================
* 初始化
* =====================================================================================
*/

window.onload = function() {
    GethotAffairs(); //获取热点新闻
}

/**
* =====================================================================================
* 方法
* =====================================================================================
*/

//获取热点新闻
function GethotAffairs() {
    var url = "/Handler/NewsHandler/News.ashx";
    GethotAffairsData(url, SetParms(page_hotAffairs));
}

/**
* =====================================================================================
* 取数据
* =====================================================================================
*/

//获取热点新闻数据
function GethotAffairsData(myUrl, myData) {
    $.ajax({
        url: myUrl,
        data: myData,
        type: "POST",
        dataType: "json",
        error: function() {
            //alert('Error loading XML document');
        },
        success: function(result) {
            var data = (result.Table);
            $.each(data, function(i, n) {
                CreatehotAffairsList(i, n); //创建热点新闻列表
            });
        }
    });
}

/**
* =====================================================================================
* 操作 UI
* =====================================================================================
*/

//创建热点新闻列表
function CreatehotAffairsList(i, n) {
    var li = "<li class=order" + (++i) + ">";
    li += "<a href='javascript:;' onclick='hotAffairsClick(" + n.NewsId + ")'; return false'>";
    li += SubString(n.Title, 20, false);
    li += "</a>";
    li += "</li>";
    $('#hotAffairs').append($(li));
}

/**
* =====================================================================================
* 事件
* =====================================================================================
*/

//点击热点新闻
function hotAffairsClick(NewsId) {
    var url = "/News/DisplayNews.html?NewsId=" + NewsId;
    self.location = url;
}

/**
* =====================================================================================
* =====================================================================================
*/

抱歉!评论已关闭.