继续我们今天的 Javascript 每日测试时间,今天的题目是
<ul id="demo">
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
<script type="text/javascript">
var ul = document.getElementById('demo');
var liList = ul.getElementsByTagName('li');
for (var i = 0; i < liList.length; ++i) {
ul.removeChild(liList[i]);
}
</script>
请问脚本执行的结果是什么?
「 在 PPK 这本书中提及过 ,getElementsByTagName(tag)返回的 HTML 数组 是会自己动态更新的,并非静态的列表。」 -- from 明城
「更正一下,其实更准确的表述,getElementsByTagName(tag)返回的是 NodeList, 而不是 Array 。」 -- from 小马
如何避免这样的问题?其一,可以换一种循环方式,使用 --i,或者 while 循环,只要代码清晰可读。比如
for(var i = liList.length - 1; i >= 0; i--) {
ul.removeChild(liList[i]);
}
这样就可以解决上述的问题( 来源 )。
其二,是看情况。比较极端的例子,比如是希望把所有子节点都清除的话,可以直接使用 玉伯 提供的方法
parentNode.innerHTML = '';
有关 innerHTML 效率问题,以目前的电脑硬件而言,排除异常复杂的页面或者逻辑,性能方面应该是非常理想的。
「 当然,有关 innerHTML 效率方面,还可以改进提高 」 -- from 圆心。
这期的题目是
请问以下 alert 语句分别弹出的值?
var a = b = c = d = e = f = 1;
alert(a++);
alert(++b);
alert(++ c);
alert(d ++);
alert(+ +e);
alert(+ + f);
这次主要考验大家对于操作符的理解,特别是一元操作符。让我们先来回顾下 Mozilla 官方 对于操作符方面的解释 。
下面再理解下 ++ 这个操作符号,通常我们都会将一元操作符直接加在变量的后面。类似的就变成了习惯,以至于对于这样的语句
alert(++ b);
就会产生怀疑。但是实际上,他们还是正确的( 来源 )。
「++ c 和 d ++ 只是运算符和运算数之间多了个空格,其实相当于++c和d++,同时建议大家除了 for (var i = 0; i < n; ++i) 这样的应用外,尽量少使用 ++ 和 --, 一来提高代码的可读性,二来避免某些不完善的 code formatter 导致错误」 -- from 小马。
那么上述问题的答案就非常明显了,分别是 1、2、2、1、1、1 。下面,再布置道家庭作业,来自 BT 的 小虎 同志 -_-!
var a = 1;
alert(- + - + + + + - + - - - - - - - + (-+-+-+-+-a++));
请问,上述的 alert 语句会弹出什么值?
随着闹运会的临近,最近的网络过滤是越发的厉害。最无奈的是, 本人竟然需要代理才能更新自家的 Blog 。
不知道是从哪个哥们想起的这招 ,使用古文的竖排方式方式关键字过滤。细想一下,这种方式虽然无奈,但总比文章中加入很多的特殊符号要好的多。
不知道在「中文字站起来以后」,会不会引起我们再次的思·想·维·新呢?想必当真如此,胡·适先生泉下也会含笑了。

好的,回过头来看下这次的 PHP 脚本。这是我根据 YiXia 兄弟的 Wordpress 插件 中的代码而来。
本人主要做了两件事情:格式化代码,「使其看起来舒服些」;第二就是优化代码的算法(现在效率上应该不用在这个类上做过多的考虑)。
在这里可以查看具体的 代码 还有 DEMO ,如果你有兴趣,欢迎 打包下载 。
- «
- 1
- ...
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- ...
- 133
- »