removeChild 函数不适用于 setTimeout 函数
removeChild Function Not Working with setTimeout function
我正在尝试构建一个将按顺序显示一系列图像的动画,但是 运行 我遇到了 removeChild 命令的问题,似乎无法弄清楚如何停止显示之前的图像下一个出现。我不能使用 jQuery,因为此代码将与没有 jQuery 的 Qualtrics 交互。下面的代码,您还可以访问它的 JSFiddle here。我绝对是初学者,非常感谢任何帮助!
////Animate\\\
var imageLinks = ["http://i.imgur.com/iUjHm4e.jpg",
"http://i.imgur.com/89Bh81C.jpg",
"http://i.imgur.com/qKecE0F.jpg",
"http://i.imgur.com/s5LzrE1.jpg",
"http://i.imgur.com/thRmkE8.jpg",
"http://i.imgur.com/mjfqeKv.jpg",
"http://i.imgur.com/w9EpXNq.jpg",
"http://i.imgur.com/b2rP5RQ.jpg",
"http://i.imgur.com/NDLm5QQ.jpg",
"http://i.imgur.com/7nohNKf.jpg",
"http://i.imgur.com/4Qtz8KB.jpg",
"http://i.imgur.com/xTwSsBe.jpg",
"http://i.imgur.com/KwXNQjR.jpg",
"http://i.imgur.com/5BVvvci.jpg",
"http://i.imgur.com/bU0jnnD.jpg",
"http://i.imgur.com/YKy6K6u.jpg",
];
function display(src) {
var img = document.createElement("img");
img.src = src;
document.body.appendChild(img);
}
function remove(img) {
document.body.removeChild(img);
}
i = 0;
function animation_loop() {
im = display(imageLinks[i]);
setTimeout(function () {
i++;
if (i < imageLinks.length) {
animation_loop();
}
}, 50);
remove(imageLinks[i]);
};
animation_loop();
您将字符串从 imageLinks
传递给 remove
方法
您需要存储在 display()
中创建的图像并将其删除。你几乎已经完成了)这是工作代码:
function animation_loop() {
im = display(imageLinks[i]);
setTimeout(function () {
i++;
if (i < imageLinks.length) {
animation_loop();
}
}, 50);
remove(im);
};
试试这个:
var imageLinks=["http://i.imgur.com/iUjHm4e.jpg",
"http://i.imgur.com/89Bh81C.jpg",
"http://i.imgur.com/qKecE0F.jpg",
"http://i.imgur.com/s5LzrE1.jpg",
"http://i.imgur.com/thRmkE8.jpg",
"http://i.imgur.com/mjfqeKv.jpg",
"http://i.imgur.com/w9EpXNq.jpg",
"http://i.imgur.com/b2rP5RQ.jpg",
"http://i.imgur.com/NDLm5QQ.jpg",
"http://i.imgur.com/7nohNKf.jpg",
"http://i.imgur.com/4Qtz8KB.jpg",
"http://i.imgur.com/xTwSsBe.jpg",
"http://i.imgur.com/KwXNQjR.jpg",
"http://i.imgur.com/5BVvvci.jpg",
"http://i.imgur.com/bU0jnnD.jpg",
"http://i.imgur.com/YKy6K6u.jpg",
];
function display(src)
{
var img=document.createElement("img");
img.src=src;
document.body.appendChild(img);
return img;
}
function remove(img)
{
document.body.removeChild(img);
}
var i=0;
function animation_loop()
{
var img=display(imageLinks[i]);
setTimeout(function()
{
i++;
if(i < imageLinks.length)
{
animation_loop();
remove(img);
}
}, 5000);
}
animation_loop();
您需要 return DOM 在 Display 函数中创建对象后才能在 remove 方法中使用。我在重新执行 animation_loop-self 函数后执行了 remove 方法以了解执行流程..
我正在尝试构建一个将按顺序显示一系列图像的动画,但是 运行 我遇到了 removeChild 命令的问题,似乎无法弄清楚如何停止显示之前的图像下一个出现。我不能使用 jQuery,因为此代码将与没有 jQuery 的 Qualtrics 交互。下面的代码,您还可以访问它的 JSFiddle here。我绝对是初学者,非常感谢任何帮助!
////Animate\\\
var imageLinks = ["http://i.imgur.com/iUjHm4e.jpg",
"http://i.imgur.com/89Bh81C.jpg",
"http://i.imgur.com/qKecE0F.jpg",
"http://i.imgur.com/s5LzrE1.jpg",
"http://i.imgur.com/thRmkE8.jpg",
"http://i.imgur.com/mjfqeKv.jpg",
"http://i.imgur.com/w9EpXNq.jpg",
"http://i.imgur.com/b2rP5RQ.jpg",
"http://i.imgur.com/NDLm5QQ.jpg",
"http://i.imgur.com/7nohNKf.jpg",
"http://i.imgur.com/4Qtz8KB.jpg",
"http://i.imgur.com/xTwSsBe.jpg",
"http://i.imgur.com/KwXNQjR.jpg",
"http://i.imgur.com/5BVvvci.jpg",
"http://i.imgur.com/bU0jnnD.jpg",
"http://i.imgur.com/YKy6K6u.jpg",
];
function display(src) {
var img = document.createElement("img");
img.src = src;
document.body.appendChild(img);
}
function remove(img) {
document.body.removeChild(img);
}
i = 0;
function animation_loop() {
im = display(imageLinks[i]);
setTimeout(function () {
i++;
if (i < imageLinks.length) {
animation_loop();
}
}, 50);
remove(imageLinks[i]);
};
animation_loop();
您将字符串从 imageLinks
传递给 remove
方法
您需要存储在 display()
中创建的图像并将其删除。你几乎已经完成了)这是工作代码:
function animation_loop() {
im = display(imageLinks[i]);
setTimeout(function () {
i++;
if (i < imageLinks.length) {
animation_loop();
}
}, 50);
remove(im);
};
试试这个:
var imageLinks=["http://i.imgur.com/iUjHm4e.jpg",
"http://i.imgur.com/89Bh81C.jpg",
"http://i.imgur.com/qKecE0F.jpg",
"http://i.imgur.com/s5LzrE1.jpg",
"http://i.imgur.com/thRmkE8.jpg",
"http://i.imgur.com/mjfqeKv.jpg",
"http://i.imgur.com/w9EpXNq.jpg",
"http://i.imgur.com/b2rP5RQ.jpg",
"http://i.imgur.com/NDLm5QQ.jpg",
"http://i.imgur.com/7nohNKf.jpg",
"http://i.imgur.com/4Qtz8KB.jpg",
"http://i.imgur.com/xTwSsBe.jpg",
"http://i.imgur.com/KwXNQjR.jpg",
"http://i.imgur.com/5BVvvci.jpg",
"http://i.imgur.com/bU0jnnD.jpg",
"http://i.imgur.com/YKy6K6u.jpg",
];
function display(src)
{
var img=document.createElement("img");
img.src=src;
document.body.appendChild(img);
return img;
}
function remove(img)
{
document.body.removeChild(img);
}
var i=0;
function animation_loop()
{
var img=display(imageLinks[i]);
setTimeout(function()
{
i++;
if(i < imageLinks.length)
{
animation_loop();
remove(img);
}
}, 5000);
}
animation_loop();
您需要 return DOM 在 Display 函数中创建对象后才能在 remove 方法中使用。我在重新执行 animation_loop-self 函数后执行了 remove 方法以了解执行流程..