JS 框架设计点滴
/** * ===================================================================================== * ===================================================================================== */ /** * @版本 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; } /** * ===================================================================================== * ===================================================================================== */