美文网首页
学习JavaScript遇到的问题

学习JavaScript遇到的问题

作者: 庄海鑫 | 来源:发表于2018-04-02 10:31 被阅读0次

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 htmlcollection

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 事件。

未完待续。。。。。

如何判断一个元素是否出现在窗口视野中

如果判断页面滚动到底部

相关文章

网友评论

      本文标题:学习JavaScript遇到的问题

      本文链接:https://www.haomeiwen.com/subject/bpavsxtx.html