document.write
document.write方法用于向当前文档写入内容。只要当前文档还没有用close方法关闭,它所写入的内容就会追加在已有内容的后面。html加载的时候,它本身是一个文档流,在控制台写入document.write()会重新打开一个文档流覆盖当前内容,只要当前文档还没有用close方法关闭,它所写入的内容就会追加在已有内容的后面。
DocumentFragment对象的用法
DocumentFragment对象是一个存在于内存的DOM片段,但是不属于当前文档,常常用来生成较复杂的DOM结构,然后插入当前文档。这样做的好处在于,因为DocumentFragment不属于当前文档,对它的任何改动,都不会引发网页的重新渲染,比直接修改当前文档的DOM有更好的性能表现。
例如:
上述代码会进行五次DOM操作,如果用DocumentFragment不会造成对页面重新渲染。
HTMLCollection 和 NodeList
历史上的DOM集合接口。主要不同在于HTMLCollection是元素集合而NodeList是节点集合(即可以包含元素,也可以包含文本节点)。所以 node.childNodes 返回 NodeList,而 node.children 和 node.getElementsByXXX 返回 HTMLCollection 。唯一要注意的是 querySelectorAll 返回的虽然是 NodeList ,但是实际上是元素集合,并且是静态的(其他接口返回的HTMLCollection和NodeList都是live的)。事实上,将来浏览器将增加 queryAll 接口取代现在的 querySelectorAll,返回 Elements 是 Array 的子类(因而可以使用Array上的forEach、map等方法)。
NodeList 相关的返回的是 Node 集合与 Node(取索引)
HTMLCollection 相关的返回是 Element 集合与 Element(取索引)
后者同样多一个 nameItem 方法,NodeList 有 forEach 方法,而 HTMLCollection 没有
两者同样可能是 live 或 static 的集合。
在浏览器环境测试任何对象的某个属性是否存在。(高程p219)
function isHostMethod(object,property){
var t= typeof object[property];
return t=='function'||(!!(t=='object'&&object[property]))||t=='unknow';
}
mouseenter mouseover
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;
y=0;
$(document).ready(function(){
$("div.over").mouseover(function(){
$(".over span").text(x+=1);
});
$("div.enter").mouseenter(function(){
$(".enter span").text(y+=1);
});
});
</script>
</head>
<body>
<p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
<p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
<div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left">
<h2 style="background-color:white;">被触发的 Mouseover 事件:<span></span></h2>
</div>
<div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right">
<h2 style="background-color:white;">被触发的 Mouseenter 事件:<span></span></h2>
</div>
</body>
</html>
-
不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
-
只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。
未完待续。。。。。
如何判断一个元素是否出现在窗口视野中
如果判断页面滚动到底部
网友评论