博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS、JQuery和ExtJs动态创建DOM对象
阅读量:6982 次
发布时间:2019-06-27

本文共 14389 字,大约阅读时间需要 47 分钟。

做了个简单使用JavaScript、JQuery、ExtJs进行DOM对象创建的测试,主要是使用JavaScript、JQuery、ExtJs动态创建Table对象、动态Table数据填充、多选控制。

1.简单前台数据处理
界面有点丑了,没美化界面,主要是JavaScript动态创建Table。效果图:

1  2  3  4      5     43 44 45     
46
47
49
50
53
56
59
60
51 留言信息52 54 日期55 57 时间58
61
62
63

64 请填写你宝贵的建议:65

66
67
匿名69
实名70
71
72
73
74
76
77
78
79 80
View Code

2.JavaScript动态创建DOM对象

主要是使用JavaScript动态创建按钮、文本、链接、表格、加上CheckBox的表格(简单实现全选),这里Table的数据是页面数据,不是服务端数据,主要是与后面的JQuery和ExtJs请求服务端数据动态创建Table的差异比较。
界面有点丑,主要是看JavaScript动态创建Dom对象,效果图:

1   2   3   4       5      12     196 197 198     
199
200
201
202
203
204
205
206 207
View Code

3.JavaScript简单效果实现

主要是自定义分割文本、Timer时钟使用、JS粘贴板使用、Div随鼠标移动的简单测试,这个稍稍好看些,效果图:

1   2   3   4       5      12     141 142 143     
145
146
147
148
149
150
151
152
153
156
157
160
163
166
169
170
171
174
177
180
183
184
185
188
191
194
197
198
199
202
205
208
211
212
213
216
219
222
225
226
158 159 161 编号162 164 标题165 167 内容168
172 173 175 001176 178 标题1179 181 内容1182
186 187 189 002190 192 标题2193 195 内容2196
200 201 203 003204 206 标题3207 209 内容3210
214 215 217 004218 220 标题4221 223 内容4224
227
228
230
231
233
234
235
236
237
238
240 我是移动DIV!241
242 243
View Code

4.使用XMLHttp进行Ajax调用动态创建Table

主要是使用XMLHttpRequest的AJAX请求服务端数据,服务端使用一般处理程序(*.ashx)处理,并使用JavaScriptSerializerDataContractJsonSerializer进行对象的序列化操作,转换为JSON字符串数据发送客户端,客户端再进行反序列化操作,进行动态Table创建和数据填充。
注意:前端JQuery和ExtJs脚本的引入以及服务端两个序列化所在的命名空间(System.Web.Script.Serialization和System.Runtime.Serialization.Json)的引入。

        

效果图:

前端代码:

1   2       3      10      11      12      13     220 221 222     
223
224
225
226
227
228
230
231
232 233
View Code

服务端代码:

1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Runtime.Serialization.Json; 6 using System.Text; 7 using System.Web; 8 using System.Web.Script.Serialization; 9 10 namespace JsJQueryExtJsReview.JQueryReview.Ajaxs11 {12     /// 13     /// AjaxHandler 的摘要说明14     /// 15     public class AjaxHandler : IHttpHandler16     {17 18         public void ProcessRequest(HttpContext context)19         {20             context.Response.ContentType = "text/plain";//application/json text/plain21             string JsonData = string.Empty;22 23             System.Threading.Thread.Sleep(2000);//延迟2000毫秒24 25             List
list = initMessages();26 27 JsonData = GetJavaScriptData(list);//JavaScript序列化操作28 JsonData = GetDataContractData(list);//DataContract序列化操作29 30 context.Response.Write(JsonData);31 }32 33 ///
34 /// DataContractJsonSerializer序列化数据35 /// 36 ///
信息对象集合37 ///
信息对象Json串
38 private string GetDataContractData(List
messages)39 {40 string json = string.Empty;41 DataContractJsonSerializer dataContract = new DataContractJsonSerializer(messages.GetType());42 MemoryStream ms = new MemoryStream();43 dataContract.WriteObject(ms, messages);44 json = Encoding.UTF8.GetString(ms.ToArray());45 return json;46 }47 48 ///
49 /// JavaScriptSerializer序列化数据50 /// 51 ///
信息对象集合52 ///
信息对象Json串
53 private string GetJavaScriptData(List
messages)54 {55 string json = string.Empty;56 JavaScriptSerializer javaScript = new JavaScriptSerializer();57 json = javaScript.Serialize(messages);58 return json;59 }60 61 ///
62 /// 初始化数据63 /// 64 ///
65 private List
initMessages()66 {67 List
list = new List
() {68 new Message(){ Name="百度",Html="
百度简介"},69 new Message(){ Name="新浪",Html="
新浪简介"},70 new Message(){ Name="搜狐",Html="
搜狐简介"}71 };72 73 return list;74 }75 76 public bool IsReusable77 {78 get79 {80 return false;81 }82 }83 }84 85 public class Message86 {87 public string Name { get; set; }88 public string Html { get; set; }89 }90 }
View Code

5.使用JQuery和ExtJs进行Ajax调用动态创建Table

主要是对JQuery、ExtJs的Ajax使用以及如何使用JQuery、ExtJs动态创建Table对象填充数据,简单实现CheckBox的全选操作。服务端的代码是第4点的一般处理程序。效果图:
代码如下:(还是第4点的页面,再加上下面4个脚本函数)

1 //JQuery的Ajax方式取得数据,添加全选按钮  2         function JQueryAjax() {  3             var message = "JQuery信息加载中......";  4             var divMessage = "
" + message + "
"; 5 $("#divContent").html(divMessage); 6 7 $.ajax({ 8 type: "POST", 9 url: "../Ajaxs/AjaxHandler.ashx", 10 async: true, //异步加载信息 11 dataType: "json", 12 success: function (data) { 13 var message = "JQuery信息加载成功!"; 14 var divMessage = "
" + message + "
"; 15 $("#divContent").html(divMessage); 16 17 createJQueryTable(data); 18 JQueryCHKBoxTable(data); 19 }, 20 error: function () { alert("请求失败!"); } 21 }); 22 } 23 24 function JQueryCHKBoxTable(data) { 25 var tab = $("
", { width: "300px", cellSpacing: "1", cellPadding: "1", border: "1" }); 26 $("").text("JQuery CheckBox Table").appendTo(tab); 27 28 var ths = $("").appendTo(tab); 29 var th0 = $("").appendTo(ths); 30 $("", { type: "checkbox", id: "chAll" }).appendTo(th0); 31 $("", { text: "名称" }).appendTo(ths); 32 $("", { text: "简介" }).appendTo(ths); 33 34 $(data).each(function (index, item) { 35 var tr = $("").appendTo(tab); 36 var td0 = $("").appendTo(tr); 37 $("", { type: "checkbox", name: "chSingle" }).appendTo(td0); 38 $("").html(item.Name).appendTo(tr); 39 $("").html(item.Html).appendTo(tr); 40 }); 41 42 tab.appendTo($("#divContent")); 43 44 $("#chAll").click(function (obj) { 45 var chSingles = $("input:[name='chSingle']"); 46 $(chSingles).each(function (index, item) { 47 item.checked = $("#chAll")[0].checked; //$("#chAll"),查询出来的是一个集合 48 }); 49 }); 50 51 // $("#chAll")[0].onclick = function () {//$("#chAll"),查询出来的是一个集合 52 // var chSingles = $("input:[name='chSingle']"); 53 // $(chSingles).each(function (index, item) { 54 // item.checked = $("#chAll")[0].checked; 55 // }); 56 // } 57 } 58 59 //ExtJs的Ajax方式取得数据,添加全选按钮 60 function ExtJsAjax() { 61 var message = "ExtJs信息加载中......"; 62 var divMessage = "
" + message + "
"; 63 var divContent = Ext.get("divContent"); 64 Ext.DomHelper.append(divContent, divMessage); 65 66 Ext.Ajax.request({ 67 method: "POST", 68 url: "../Ajaxs/AjaxHandler.ashx", 69 async: true, //异步加载信息 70 success: function (response, opts) { 71 message = "ExtJs信息加载成功!"; 72 var divMessage = "
" + message + "
"; 73 //Ext.get("divMessage").dom.innerHTML = message; 74 Ext.DomHelper.append(divContent, divMessage); 75 76 var data = Ext.util.JSON.decode(response.responseText); 77 createExtJsTable(data); //ExtJs创建Table 78 ExtJsCHKBoxTable(data); //ExtJs创建CheckBox的Table 79 }, 80 failure: function (response, opts) { alert("请求失败!"); } 81 }); 82 } 83 84 //ExtJs的CheckBox Table 85 function ExtJsCHKBoxTable(data) { 86 var divContent = Ext.get("divContent"); 87 var tabTag = { tag: "table", style: "width:300px;border:1px solid blue", children: [{ tag: "caption", html: "ExtJs CheckBox Table"}] }; 88 var tab = Ext.DomHelper.append(divContent, tabTag); //将table追加到divContent 89 90 //创建列头 91 var ths = { tag: "tr", children: [ 92 { tag: "th", style: "border:1px solid blue", children: [ 93 { tag: "input", type: "checkbox", id: "chkAll" } 94 ] 95 }, 96 { tag: "th", style: "border:1px solid blue", html: "名称" }, 97 { tag: "th", style: "border:1px solid blue", html: "简介" } 98 ] 99 };100 Ext.DomHelper.append(tab, ths); //将tr追加到table101 102 Ext.each(data, function (item) {//遍历数据103 var trTag = { tag: "tr", children: [104 { tag: "td", style: "border:1px solid blue", children: [{ tag: "input", type: "checkbox", name: "chkSingle"}] },105 { tag: "td", style: "border:1px solid blue", html: item.Name },106 { tag: "td", style: "border:1px solid blue", html: item.Html }107 ]108 };109 Ext.DomHelper.append(tab, trTag); //将tr追加到table110 });111 112 Ext.get("chkAll").on("change", function (obj) {113 var chkSingles = Ext.query("input[name='chkSingle']"); //Dom集合114 Ext.each(chkSingles, function (item) {115 item.checked = Ext.get("chkAll").dom.checked;116 });117 });118 119 // Ext.get("chkAll").addListener("click", function (obj) {120 // var chkSingles = Ext.query("input[name='chkSingle']"); //Dom集合121 // Ext.each(chkSingles, function (item) {122 // item.checked = Ext.get("chkAll").dom.checked;123 // });124 // });125 }

6.使用JQuery和ExtJs简单创建对象

其实前面复杂的操作处理了,这个就比较简单,简单创建几个input对象。依然是第4点的页面,再加上下面2个脚本函数,代码如下:

1   //JQuery创建其他对象 2         function createJQueryObjs() { 3             var divContent = $("#divContent").css("text-align", "left").append("
JQuery创建其他对象
"); 4 5 $("", { type: "button", val: "创建按钮" }).appendTo(divContent); 6 $("
").appendTo(divContent); 7 $("", { type: "button", val: "添加样式", class: "buttonCSS" }).appendTo(divContent); 8 $("
").appendTo(divContent); 9 $("", { type: "button", val: "添加事件", click: function () {10 alert($(this).val() + ",测试成功!");11 }12 }).appendTo(divContent);13 $("
").appendTo(divContent);14 $("", { type: "text", id: "txt", val: '创建文本', css: { "background-color": "red"} }).appendTo(divContent);15 $("
").appendTo(divContent);16 $("", { type: "radio", name: "sex", val: "男" }).appendTo(divContent);17 $("", { text: "男" }).appendTo(divContent);18 $("", { type: "radio", name: "sex", val: "女", checked: "true" }).appendTo(divContent);19 $("", { text: "女" }).appendTo(divContent);20 $("
").appendTo(divContent);21 }22 23 //ExtJs创建其他对象24 function createExtJsObjs() {25 var divContent = Ext.get("divContent");26 Ext.DomHelper.append(divContent, "

ExtJs创建其他对象
");27 var buttonTag = { tag: "input", type: "button", value: "ExtJs按钮" };28 Ext.DomHelper.append(divContent, buttonTag);29 Ext.DomHelper.append(divContent, "
");30 var textTag = { tag: "input", type: "text", id: "testText", value: "ExtJs文本框" };31 Ext.DomHelper.append(divContent, textTag);32 }
View Code

使用原生JavaScript动态创建Table有些生硬,不太灵活;使用JQuery和ExtJs是各个API方法的调用,相对灵活些,代码也相对减小一些。

ExtJs一般不用Table来显示列表数据,一般直接用GridPanel直接绑定数据,显示数据,再加上CheckBox的多选功能。

 

转载于:https://www.cnblogs.com/SanMaoSpace/p/3174644.html

你可能感兴趣的文章
一种自动化检测 Flash 中 XSS 方法的探讨
查看>>
基于环信sdk实现简单即时聊天
查看>>
Java基础-Synchronized原理
查看>>
大道至简,阿里巴巴敏捷教练的电子看板诞生记
查看>>
zookeeper学习04 zookeeper收尾+dubbo前瞻
查看>>
《讲个故事》为什么IP地址与Mac地址 缺一不可
查看>>
华山论剑之浅谈iOS的生产线 工厂模式
查看>>
浅谈javascript异步发展历程
查看>>
在vscode使用editorconfig的正确姿势
查看>>
当心!你的密码正在被手机中的声音泄露!
查看>>
你用过 PropTypes 的这些类型检查么?
查看>>
H5小游戏 【篇一】 组词游戏
查看>>
枚举的使用示例
查看>>
换个姿势学数学:学的爽,用的上
查看>>
runC爆严重漏洞影响Kubernetes、Docker,阿里云修复runC漏洞的公告
查看>>
力扣(LeetCode)146
查看>>
Understanding HBase and BigTable 译文
查看>>
Java™ 教程(泛型、继承和子类型)
查看>>
Spring AOP
查看>>
如何优雅的构建排序公式
查看>>