所谓规规矩矩的写Javascript代码,强调的就是不要把Javascript代码混杂到Html代码里,服务端编程一般强调MVC分离,客户端编程一样存在这样的分离:我们可以把Html看作是M,而Css看做是V,至于Javascript则看成是C。
01 <html>
02 <head>
03 <title>DEMO</title>
04 <script type="text/javascript">
05 function demo(id, name) {
06 alert("id: " + id + ", name: " + name);
07 }
08 </script>
09 </head>
10 <body>
11 <ul id="list">
12 <li id="prefix_1" onclick='demo(1, "a");'>a</li>
13 <li id="prefix_3" onclick='demo(3, "b");'>b</li>
14 <li id="prefix_5" onclick='demo(5, "c");'>c</li>
15 </ul>
16 </body>
17 </html>
上面的代码是典型的混合编码方式,一个主要特征是事件触发使用的是html硬编码的onclick方式,这无疑不满足我们上面所说的MVC分离,所以应该重构,使用DOM的方式动态添加,具体如下:
01 <html>
02 <head>
03 <title>DEMO</title>
04 </head>
05 <body>
06 <ul id="list">
07 <li id="prefix_1">a</li>
08 <li id="prefix_3">b</li>
09 <li id="prefix_5">c</li>
10 </ul>
11 <script type="text/javascript">
12 var child = document.getElementById("list").childNodes;
13 for (var i = 0; i < child.length; i++) {
14 if (child[i].tagName != "LI") {
15 continue;
16 }
17 child[i].onclick = function() {
18 alert("id: " + this.id.split("_")[1] + ", name: " + this.innerHTML);
19 }
20 }
21 </script>
22 </body>
23 </html>
重构之后,html干净了,javascript代码则统一放到了页面底部,可以进一步放到一个js文件里以便缓存。动态添加事件时,事件方法里所需要的数据最好都通过DOM元素获得,比如id,或者innerHTML(顺便说一句,innerText是IE ONLY的,一般不用)。
有人喜欢使用自定义属性来设置参数,然后通过document.getElementById("...").getAttribute("...");获取:
<li myid="1" myname="foobar">foobar</li>
但这样的页面无法通过w3c有效性判断(Html5允许自定义名字是data-开头的属性,但Html5离正式应用还有好长一段路要走),不是一个好方法。
还有一些人喜欢把数据放到class属性里,然后通过document.getElementById("...").className获取:
<li class="id:1 name:foobar">foobar</li>
虽然如此能通过w3c验证,但毕竟class是供Css使用的,如此一来就不满足我们前面说的MVC分离了。
最后一点需要说明的是,在循环里定义方法时,千万注意不要掉入闭包的陷阱,比如说上面代码里this.innerHTML,如果换成child[i].innerHTML,这会始终指向最后一个循环元素。
看了以上转载,一个想法:HTML代码中只设置id 、name基础属性。CSS、event可以通过DOM对象解析来实现。
分享到:
相关推荐
软件更新想必大家都用过,很多是用友盟的下载,但是也有自己公司服务器下载的处理方式,本文主要讲解的是自己下载的处理方法 想必大家就会说,这还用自己做呀,系统自带的一... 好吧,既然这样还是规规矩矩的自己写吧
通达信指标公式源码规规矩矩做波段(波段操作,配合其它顶底指标使用).doc
"规规矩矩做波段副图指标"是通达信中的一种自定义技术指标公式,旨在帮助投资者识别市场的波动趋势,从而进行更为精准的买卖决策。 这个公式的核心部分是计算"波段线",它是基于移动平均线(SMA)和价格摆动指数...
* 规规矩矩定义Option Explicit Dim rg As Range Sub MyCode() Set rg = ActiveCell MsgBox rg.Address End Sub * 变量可以不定义,但这是不推荐的做法。 1.1.2 对象变量的类型不存在或缺少引用 在VBA编程中,...
例如,当学生面对上联“规规矩矩写字”时,需要思考如何在保持字数相等、句式一致的前提下,创作出与之内容相关的下联。在这样的练习中,学生能够学会如何巧妙地安排词语,使得对联既具有形式上的美感,又不失意境上...
对联写作是一个传统而又具有挑战性的语文活动,上联“规规矩矩写字”要求学生写出下联,这一部分考察了学生对对仗和平仄等对联创作规则的理解和应用能力。对联是中国文化中的独特表现形式,它要求语言简洁、对仗工整...
因为身份证号作为一串固定的数字并没有运算需求,应该归属于规规矩矩的文本。 下面,我们来介绍三种解决方法: 方法一:使用英文半角的“'”号 在表格中输入英文半角的“'”号(冒号后面那个键),其作用就是将该...
5. 做人原则和职业道德:实习让学生理解并践行企业文化和价值观,如“规规矩矩做人、规规矩矩做事”的原则,诚信和正直在人际交往和职业生涯中的重要性。 6. 角色转变:从学生到职场人士的角色转换,意味着责任和...
2. **职业素养**:实习期间,作者体会到了“规规矩矩做人,规规矩矩做事”的企业文化和工作原则,明白了诚信、诚实待人对于个人发展的重要性。这表明个人品质和职业道德在职场中的重要地位。 3. **学习态度与方法**...
1. **语文学习方法**:题目中提到的“学习语文,应养成良好的学习习惯”,强调了语文学习的基础在于养成好的习惯,如字要规规矩矩地写,话要说得清楚明白,课文要读得透彻,练习要做得扎实,作文要认真对待。...
在海规公司,他深刻理解了“规规矩矩做人、规规矩矩做事”的企业精神,体会到诚实、正直在职场中的重要性。实习让他意识到,无论在学校还是工作中,都需要不断学习和自我提升,以适应不断变化的环境。 3. 黄嘉璐...
6. **语文学习习惯**:强调“字要规规矩矩地写,话要清清楚楚地说,课文要仔仔细细地读,练习要踏踏实实地做”,培养良好的学习习惯。 7. **生活哲理应用**:通过《走一步,再走一步》的故事,引导学生面对困难时...
7. 自我提升:鼓励学生改进不足,如“上课还不够专心”,并提出具体改进建议,如“静下心来写作业”、“规规矩矩地坐在课堂上”。 8. 学习策略:提倡学生运用有效学习方法,如“专心致志地听讲”、“认认真真地完成...
内容索引:C#源码,菜单窗体,T形窗体,异形窗体,半透明 用C#实现半透明的T形窗体,一个典型的异形窗体实现实例,除了平时我们看到的规规矩矩的窗体外,不规则窗体的应用也越来越广泛,了解异形窗口的创建,对灵活掌握...
另外,还有一组是AABB式的词语,如“偷偷摸摸”、“从从容容”,对应的仿写可以是“高高兴兴”、“大大咧咧”、“规规矩矩”、“沸沸扬扬”。 三、词语选用:这部分考察了学生对同义词的理解和应用。例如,“美丽”...
通过写字,不仅让学生掌握汉字的基本技能,还能培养他们的耐心和专注力,促进他们形成“规规矩矩写字,堂堂正正做人”的人生观。 二、写字教学遵循的原则 1. 直观性:教学过程中注重生动性和示范性,让学生通过观察...
11. **对联创作**:结合对联的规则,要求学生写出与“规规矩矩写字”相对应的下联,如“认认真真做人”。 12. **书法感受**:通过描述楷书、行书、草书的特点,锻炼学生的比喻能力和艺术感知,如“楷书如人端正站立...
高分项目,基于Unity3D开发实现的超级闪躲小游戏模板Collision HIT 1.0,内含完整源码+资源+unity...规规矩矩的红球忽然快速冲向你,是否会让你的心跳加速呢?赶快用你的反应力,控制蓝球闪避开红球吧。后面的红球会...
她的故事教导我们要勇敢面对生活中的困难,即使面临挫折也要积极向前,正如她所说:“宁愿跑起来被拌倒无数次,也不愿规规矩矩走一辈子。”这种积极的人生态度是我们每个人都可以学习的。 此外,读后感的写作也是一...