第一个js实例总结

我js完全是白目啊委屈,看了几天的书,老大布置给我一个任务,让我模仿这个页面,实现这个页面的效果,

网址:点击打开链接(http://backbonejs.org/examples/todos/index.html)

源码下载:http://download.csdn.net/detail/mayixixi/4374857

代码全部是在谷歌浏览器调试的,别的浏览器的兼容性问题没有考虑,写的时候也会用到一些html5的内容,所以一般浏览器能够兼容到什么程度,真心的木有做测试。做这个页面学到很多东西,所以写篇文章纪念一下。

一 页面结构如下:

<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link  rel="stylesheet" type="text/css" href="ex2.css" />

</head>
<body>
  <div id="todoapp"> 
    <header>
      <h1>Todos</h1>
      <input id="newTodo" type="text" placeholder="What needs to be done?">
    </header>
    <section id="main">
      <input id="toggle-all" type="checkbox">
      <label for="toggle-all">Mark all as complete</label>
      <ul id="todo-list">//用来添加要做的事情,每件事情用一个li来表示
      </ul>
    </section>
    <div id="footer">
      <a id="clear-completed">清除已经完成的事情</a>
      <div id="todo-count"></div>
    </div>
    
  </div>
  <script type="text/javascript" src="ex2.js"></script>//放在头部意味着要等全部的js代码都被下载,解析,执行完毕后才开始呈现页面内容,但是这无疑会导致页面/呈现时出现明显的迟疑,所以现代web应用程序一般将全部的js引用放在body元素中。
  </body>
</html>

问题一:关于js引用位置的问题:

我本来是将js文件的引用放在头部位置,但是不起作用,后来老大说:放在head和放在body的最后,一样都会起做用,只是放在head中,js代码会在onload之前起作用,也就是说很多dom还没加载好,js就运行起来当然会出错了。

问题二:关于windows.onload必须等待网页中的所有元素(包括图片)加载完毕后才能执行。且不能同时编写多个,否者后面的会将前面的覆盖。

问题三:关于回车事件的绑定

function addTodo()//回车事件
{//添加要做的事情
	if(event.keyCode==13)//判断事件是否由回车键触发(回车键的keyCode为13)
	{
		//要执行的代码
	}
}
问题四:关于childNodes与children的区别

childNodes包含的不仅仅是html节点,所有属性、文本节点都会被包含在里面。二children包含的只有html节点

例如:

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
/*document.getElementsByTagName("ul").childNodes.length;//值为7(IE为3)因为虽然ul只有3个li元素,但是但是这3个li元素之间有四个文本节点(li元素之间的空白符),所以最后值为7,如果像下面这样把所有的空白符都删除将会返回相同的结果(都是3):

<ul><li>1</li><li>2</li><li>3</li></ul>




问题五:关于innerText,innerHTMl,outText,outHTML 的区别(这个要另写一篇文章,这里不再详细描写)。

问题六:关于event.srcElement与event.target(委屈可怜忘了保存草稿了,突然关了还得重新写)

function delEffect(evt)//点击单个按钮的删除效果(文字变灰)
{//删除效果
	var e =evt || window.event;//对事件的兼容性写法,在ie中支持window.event,ff支持event,所以在ie中event为null在ff中window.event为空。
	var o =window.event?e.srcElement:e.target;//对触发事件的对象的兼容性写法。ie支持event.srcElement,而非ie浏览器支持event.target.所以上面这句代码的含//义是:若果支持windows.event事件,则用event.srcElement方法来获取触发事件的对象。
}

问题七:关于全选

原来的代码:(比较冗余,上半部分和下半部分的代码很相似)

if(toggleAll.checked == true) 
	{
		
		for(i = 0;i < code_Values.length;i++){ 
				code_Values[i].checked = true; 		
		} 
	}
	else
	{
		for(i = 0;i < code_Values.length;i++)
		{ 

				code_Values[i].checked = false; 
		} 
	}	

用三目运算符代码很简洁

for(var i=0;i<li.length;i++)
{
	li[i].children[0].checked = ( toggleAll.checked ) ? true:false;//(如果全选按钮为选中状态则下面的多选框变为选中状态,否则都///变为未选中状态)
}

问题八:关于localStorage(内容比较多,要单独写一篇文章来说明)。

问题九:关于事件绑定的函数的摆放位置。

1 摆放位置不要太散乱,否则不利于修改(找的时候比较麻烦)。

2 关于文件的摆放位置,主要有三类文件值得注意( 独立的事件 、绑定在在其他事件中的事件 、 页面加载时的事件)

问题十:关于什么时候该解除事件绑定(字数不多,还是决定单独写一篇文章大笑


最后总结:(1)写代码的过程中要注意代码重用问题,多次用到的代码最好是写成一个单独的函数以方便调用。

(2)写代码的时候要注意格式及代码的清晰度,为了方便阅读要注意代码的缩进及要适当的写注释。

(3)写代码的时候要尽量简洁,不要写太多的冗余代码。

(4)关于函数及变量命名的问题(老生常谈了吐舌头),命名的时候要起有一定意义的名字,变量名不要随便的用a,b,c....之类的,函数名也不要命名为fun1,fuc2....之类的。非常不便于阅读。所以要努力锻炼自己的命名肌了。


差不多就是这些内容了。js小菜鸟,我会继续努力的。得意文章中有什么了解不到位的地方,欢迎大家批评指正。









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值