这里的JavaScript代码是什么,特别是while循环:
function setAjaxLinks(){
var links = document.body.getElementsByTagName("a");
var linkL = links.length;
while (linkL--) {
if (!links[linkL].href.match('#')) {
mj.pageLoad(links[linkL]);
}
}
}
我知道“mj”并不意味着什么,但一般的要点是什么?
答案 0 :(得分:5)
它遍历页面上从最后一个到第一个(递减)的所有链接(a-tags)。
如果找到的链接中没有#
符号,则会调用mj.pageLoad
函数并将相关链接作为参数。
这是一个打击:
function setAjaxLinks(){
//find all <a> tag elements on the page
var links = document.body.getElementsByTagName("a");
//get the amount of <a> tags on the page
var linkL = links.length;
//loop over all <a> tags on the page from last to first
while (linkL--) {
//if the href attribute on the current <a> tag has a # sign in it
if (!links[linkL].href.match('#')) {
//then call this function (and from the name of the function convert it to an ajax call)
mj.pageLoad(links[linkL]);
}
}
}
答案 1 :(得分:4)
表达式:
linkL--
将linkL
递减1并返回先前的linkL
值。
表达式:
while (someIntValue) { ... }
在someIntValue
不是0
时运行循环体。它相当于:
while (someIntValue != 0) { ... }
所以:
while (linkL--) { ... }
将使用linkL
(在循环内)运行循环,从其初始值减1到零,包括零。
答案 2 :(得分:2)
这是一个反向,在许多/大多数情况下比“for”更快:请参阅此处的引文:http://blogs.oracle.com/greimer/entry/best_way_to_code_a
答案 3 :(得分:1)
它基本上是一个反向for
循环。从“顶部”开始并向下计数直到达到0.在执行顺序不相关的情况下,for
循环的效率更高。
答案 4 :(得分:1)
基本上它遍历集合links
,并检查它们是否包含#
。
linkL
存储集合的长度。 while
检查此变量的布尔值,然后将其减1。因此,当linkL
达到零时,它仍然会运行,并且在下一个转弯中零将评估为false
,因此它会停止。
如果您在linkL
后检查while
,则会为-1。
答案 5 :(得分:0)
它看起来像一个页面预加载器。
while
循环递减linkL
,直到达到0并迭代每个a
标记。