我试图将一些字符串附加到一个部分,并希望在x秒后从DOM中删除每个字符串。我的代码出了什么问题?
例如:
JS和HTML:
var strings= ['one', 'two', 'three'];
var removeAfter = 0;
for(i in strings){
removeAfter += 5;
$('#stringsHolder').append(strings[i]);
setTimeout(function(){
$("#stringsHolder").last().remove();
}, removeAfter);
}
<section id="stringsHolder">
答案 0 :(得分:1)
您的ID在html stringHolder
中不正确,但在js stringsHolder
中,感谢@Anthony Grist
var strings = ['one', 'two', 'three'];
var removeAfter = 0;
for (i in strings) {
$('#stringHolder').append("<div>" + strings[i] + "</div>");
removeAfter += 500;
(function (removeAfter) {
setTimeout(function () {
$("#stringHolder").children().last().remove();
}, removeAfter);
})(removeAfter);
}
<强> Demo 强>
答案 1 :(得分:0)
这里有一些错误。
stringHolder
,在JS中使用stringsHolder
。更大的问题:
stringHolder
元素本身。要解决3,而不是.append(strings[i])
,你应该做.append('<span>' + strings[i])
或类似的东西,以便它被包裹在一个元素中。 (虽然这可能不是您的实际代码。)
要解决4,您需要选择元素的子元素:$("#stringsHolder").children().last().remove();
var strings = ['one', 'two', 'three'];
var removeAfter = 0;
for (i in strings) {
removeAfter += 500;
$('#stringsHolder').append('<span>' + strings[i]);
setTimeout(function() {
$("#stringsHolder").children().last().remove();
}, removeAfter);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<section id="stringsHolder"></section>
&#13;