[JS]JS查漏补缺
JavaScript会用,但是一直没有去系统的了解一下细节,下面是工作中遇到的一些以前不知道的细节东西,一一记录下来。
1. <a href="http://www.baidu.com" onclick="clickme();return false;">点我</a>
假如在onclick属性中不加入return false,那么它会在执行完clickme()函数后跳转到baidu.com;加入语句它只会执行函数而不会跳转。
2. 对各函数绑定到一个事件
现在定义三个函数 A(), B(), C(), 都要将他们绑定到onclick事件上,
*.onclick = A(), *.onclick = B(), ...
这样实际上最后一个绑定的函数灰覆盖前面的函数,这个时候我们可以使用匿名函数来解决这个问题:
*.onclick = function() {
A();
b();
C();
}
3. nodeName返回的结果都是大写字母。
如imgName.nodeName = 'IMG'.
4. nodeType
元素节点的nodeType值是1,属性节点值是2,文本节点值是3.
5. 应该使用getAttribute() and setAttribute() method来代替以前直接使用属性名称赋值。
foo.title = 'someTitle' ==> foo.setAttribute('title', 'someTitle')
6. getElementBy*(o).childNodes返回的都是一个对象数组,它会将元素的属性节点对象,文本节点对象一并返回,故而,当使用nodeValue属性是要注意:
<a href="#" id='link'>hello</a>
'hello' == document.getElementById('link').childNodes[0].nodeValue ==> true
因为这个‘hello’是属于位文本节点的值,而不是元素节点的值(元素节点有值么?)。
7. innerHTML属性不是一个业界标准,而是一项专利技术,虽然现在几乎所有浏览器都对它提供了很好的支持。
8. document.createNode('tagName') || document.createTextNode('content') --> parentNode.appendChild(childNode)//动态添加文本或者标签的方法
child1.parentNode.insertBefore(newChilde, child1)//将一个新的节点插入到父节点的子节点前面
Note:虽然可以使用JS动态的将内容添加到HTML文档中,但是考虑到目前搜索引擎的搜索机(Searchbot)还不怎么支持JS, 因此当使用JS向网页中写入重要内容时,就应当仔细考虑设计和实现方式。