jQuery代码用作Javascript
jQuery code to be used as Javascript
我在这个网站的一个答案中找到了一个代码。我想知道该代码是否可以用简单的JS编写?另外,如果有人能帮助我用简单的Javascript来理解它,我将非常感谢您的帮助。
该代码用于修复在 chrome 中更改选项卡以用于定时函数(如 setTimeout 和 setInterval)时损失的时间。
代码是这样的 -
var div = $('div');
var a = 0;
var delay = (1000 / 30);
var now, before = new Date();
setInterval(function() {
now = new Date();
var elapsedTime = (now.getTime() - before.getTime());
if(elapsedTime > delay)
//Recover the motion lost while inactive.
a += Math.floor(elapsedTime/delay);
else
a++;
div.css("left", a);
before = new Date();
}, delay);
请注意,我是这个网站的新手,因此以我目前的声誉,我无法评论我所指问题的答案。
OP 的问题中有两个 jquery 调用:
-
$('div')
-
div.css("left", a)
第一个:
$('div')
-> [].slice.call(document.querySelectorAll('div'))
返回基于传递的参数在 DOM 中找到的匹配元素的集合 - jQuery docs
它返回与选择器 'div'
匹配的元素集合(数组)。这意味着页面上的所有div
元素。
让我们去掉普通的JavaScript部分:
-
document.querySelectorAll('div')
选择器'div'
选择document
上的所有元素。这里的问题是querySelectorAll
返回一个NodeList
,而不是一个数组。它是一个类似数组的对象。 -
[].slice
返回数组一部分的浅拷贝 - MDN
它可以接受类似对象的数组(例如querySelectorAll
的结果)。结果是一个实际的数组
此时var div
包含页面上所有div
元素的数组。
第二个 div.css("left", a)
-> div.forEach(function (item) {item.style.left = a + 'px';})
为每个匹配的元素设置一个或多个 CSS 属性 - jQuery Docs
它将样式属性设置为 jQuery 元素。在这种情况下,它将 css left
属性设置为 a
。 a
是一个数字,jQuery会将'px'
附加到该数字以使其成为字符串。
让我们去掉普通的JavaScript部分:
-
div.forEach()
循环遍历div
变量,该变量现在是一个数组。对于数组中的每个项目,执行以下函数: -
function (item) { item.style.left = a + 'px'; }
此函数采用参数 (item
)。这是一个 dom 元素,存储在div
数组中。每个 dom 元素都有一个带有 css 属性的样式对象。此函数将a
变量(一个数字)连接到它'px'
,并将其设置为left
属性。
所以基本上,这个函数循环访问div
数组中的每个项目,并将 styles.left
属性设置为 a
值。
完整的代码将是:
var div = [].slice.call(document.querySelectorAll('div'));
var a = 0;
var delay = (1000 / 30);
var now, before = new Date();
setInterval(function() {
now = new Date();
var elapsedTime = (now.getTime() - before.getTime());
if(elapsedTime > delay)
//Recover the motion lost while inactive.
a += Math.floor(elapsedTime/delay);
else
a++;
div.forEach(function (item) {
item.style.left = a + 'px';
})
before = new Date();
}, delay);
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- JavaScript代码问题:我正在将对象转换为数组
- Javascript阻止其他Javascript代码
- JavaScript代码未正确检查ajax请求
- 如何调试Javascript代码或函数
- 为什么我在这个javaScript代码中使用NaN
- 将javascript代码转换为jquery代码时出错
- 如何从Objective-C代码中调用javascript代码
- 有什么工具可以轻松读取javascript代码吗
- 这个javascript代码是如何编写的
- 如何解密此javascript代码
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- HTML标记,包含带引号的JavaScript代码中的引号
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- addEventListener的Javascript代码不工作!?(单击时打开放大的img)
- JavaScript代码无法在表单上呈现部分
- 以下 JavaScript 代码与 Facebook 相关
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间