如何在Vue.js中使用javascript避免克隆节点内存泄漏
作为标题状态,我想避免我的函数出现内存泄漏,但我对如何实现这一点感到非常困惑。目前,在我的过程中,我在如何在Vue.js中使用javascript避免克隆节点内存泄漏,javascript,html,Javascript,Html,作为标题状态,我想避免我的函数出现内存泄漏,但我对如何实现这一点感到非常困惑。目前,在我的过程中,我在表td中做了一个无限循环,但我刚刚意识到,如果我只使用这个,它可以添加一个无限,我想避免它,我尝试让这样的伪代码实现我想要的: 1. Add An Original Item to a temporary variable 2. Assign it and then destroy the earliest one, so it can only loop in index [1,2,3] wh
表td
中做了一个无限循环,但我刚刚意识到,如果我只使用这个,它可以添加一个无限
,我想避免它,我尝试让这样的伪代码实现我想要的:
1. Add An Original Item to a temporary variable
2. Assign it and then destroy the earliest one, so it can only loop in index [1,2,3] where
-- index 1 = is a prev
-- index 2 = is what we see
-- index 3 = is a next
3. every cloned aside from this 3 index
但我对如何实现这一目标感到困惑。这是我实现它的javascript代码:
itemSlider() {
let autoScroller = document.getElementById("customWrapper");
let item = autoScroller.getElementsByTagName("td");
let originalLength = item.length;
let multiplier = 0;
let imgScaller = 0;
let index = 0;
let temp = [];
setInterval(function() {
if (item[imgScaller + 1].classList != undefined) {
autoScroller.style.transform = `translateX(${-380 * multiplier}px)`;
}
if (imgScaller - 1 != -1 && imgScaller != 0) {
let firstSlide = item[imgScaller - 1];
let cloneFirst = firstSlide.cloneNode(true);
autoScroller.appendChild(cloneFirst);
}
if (imgScaller) {
item[imgScaller + 1].classList.add("active");
}
if (imgScaller - 1 != -1) {
item[imgScaller].classList.remove("active");
item[imgScaller - 1].classList.remove("active");
}
multiplier++;
imgScaller++;
console.log("Cek before : ", multiplier);
console.log("Cek original length : ", originalLength);
if (multiplier % originalLength == 0) {
// I just wondering maybe I can input the logic after check it with modulo in here
// But it seems I got confused as how to achieve it
autoScroller.remove();
}
}, 3000);
}
对于可能认为这是重复的您,作为参考,我已经在这里尝试了几个主题,但仍然未能实现:
有人能帮我解决这个问题吗?你可以试试这样的方法:
函数removeCells(){
const container=document.querySelector('tr');
const cells=document.querySelectorAll('td');
for(设i=0;i<6;i++){
container.removeChild(单元格[i])
}
}
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
测试
删除单元格
你只是想停止setInterval()
?不是这样,我还是想让interval工作,只要你还在这个页面上,它只是,
标记会克隆,只要interval工作,当我看到它时,首先,假设我有大约6个,但我能在达到24个之后删除最早的一个吗?就像每18个一样,它会删除最早的6个,类似的东西,所以当我签入元素开发工具时,它直到数百个
,如果用户打开页面很长一段时间,因为它会使组件变得滞后,一旦达到一定数量的td
s,您可以使用clearInterval()
?但是如果我使用clearInterval()
,它不会使我的旋转木马停止吗?而不是无限循环哦,我明白你的意思clearInterval
在这种情况下不起作用谢谢你的回答,当我尝试使用它时,我成功地删除了最旧的一个,但另一个问题出现了,我删除它后得到了未定义的classList
这是我的沙盒更新我的答案的链接,如果不是你想要的,请在我尝试你的答案时告诉我,这不完全是我想要的,但在我稍微调整一下之后,我认为它符合您的逻辑,当我尝试它时,它解决了内存泄漏的问题,谢谢^^