【发布时间】:2019-10-02 17:29:49
【问题描述】:
我在使用 jQuery 时遇到了一些性能问题。因此,我想尝试使用 JS 而不是 jQuery 的 7000 长度的循环。因为我读过,那个 jQuery 的性能总是很差。
我尝试将我的 jQuery 选择器转换为 JS,但它仍然无法正常工作:
来自:
var i;
for (i = 0; i < e.detail.length; i++){
$("iframe").contents().find(".timeline-node[title='" + i + "']").css("background-image", "url( \"imgs/" + e.detail[i] + ".png \") ");
}
到:
var i;
for (i = 0; i < e.detail.length; i++){
document.getElementById('#iframe').querySelector("[title=\"" + i + "\"]").css("background-image", "url( \"imgs/quality_3/" + e.detail[i] + ".png \") ");
}
我的新代码的错误是:Cannot read property 'querySelector' of null at HTMLDocument。 我认为 JS 无法使用 attr 找到我的标题。一世。但我的 jQuery 代码运行良好,但需要 80 秒。为 7000 个索引执行此操作。
【问题讨论】:
-
将
document.getElementById('#iframe')更改为document.querySelector('iframe') -
document.getElementById('iframe')ORdocument.querySelector('#iframe')如果 iframe 具有 id="iframe" 否则document.querySelector('iframe') -
@mplungjan 从初始循环中,您可以看到他选择的是元素,而不是 ID:
$("iframe") -
是的,但我的评论仍然正确:)
-
另外,对于将来的 jquery 到 vanilla js 的转换,检查这个网站总是有帮助的:youmightnotneedjquery.com
标签: javascript jquery