发表于: 2017-03-25 00:20:18

2 1353


今天完成的事情: 

阅读书籍和查看修真院js任务下给出的参考网页,整理知识点。对师弟的js任务一进行审核,审核过程中自己也对任务一用到的知识进行了复习。下午向师弟学习了将小课堂文本内容发布到微信公众号的方法,比我想象的简单,怪不得现在搞自媒体的人那么多。


明天计划的事情:

看js书籍并整理知识点,完成任务5页面,并对需要用到的JSON和Ajax知识进行进一步的了解和学习,之前虽然看过,但是当时看的不是太懂,一知半解,所以现在差不多都忘了。这次一定要边学边用,让知识沉淀下来。


遇到的问题:

书里有一个图片库的demo,为了保证脚本能平稳退化,应该让浏览器在placeholder图片不存在的时候打开被点击的链接而不是什么事情都不发生。原代码为:

links[i].onclick = function() {

  showPic(this);

  return false;

}

这里直接返回了false,阻断了打开被点击链接的行为,其实应该由showPic函数决定。showPic应该返回两个可能的值。

为了修正这个问题,我们利用“!”对showPic的返回值进行取反。

renturn !showPic(this);

此时若showPic返回true,我们返回false,浏览器不打开链接,反之亦然。

但我将代码进行这样的修改后,点击链接时无论如何都会打开被点击的链接而不是替换图片。


收获:

为什么引入js文件时<script>标签最好放在文档的末尾,</body>之前?

根据HTTP规范,浏览器每次从同一个域名最多同时下载两个文件,位于<head>块中的脚本会导致浏览器无法并行加载其他文件。这样做能使浏览器更快的加载页面。

函数真正的威力体现在,你可以把不同的数据传递给它们,而他们将使用这些数据去完成预定的操作。其真正的价值体现在,可以把它当作一种数据类型来使用,这意味着可以把一个函数的调用结果赋给一个变量。

出于性能方面的考虑,我们需要尽可能的少访问DOM,减少标记。在一个函数内将搜索结果保存在变量中,2次使用时直接引用变量。若有多个函数重复做一件事,可将搜索结果保存在全局变量中。

若在HTML文档完成加载之前执行脚本,此时DOM是不完整的。应该让函数在网页加载完毕后立刻执行。而加载完毕时会触发一个onload事件,可将函数绑定到这个事件上,若有多个函数需要绑定,可创建一个匿名函数来容纳要绑定的函数,然后将匿名函数绑定到window.onload上。最佳解决方案为使用addLoadEvent函数:

function addLoadEvent(fun) {

  var oldonload = window.onload;

  if (type of window.onload != 'function') {

    widow.onload = func;

  } else {

    window.onload = function() {

      oldonload();

      func();

    }

  }

}

若在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它,若在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。


返回列表 返回列表
评论

    分享到