追加到空元素无效
Appending to empty element does not work
我想逐个显示存储在数组中的字符串的字符。当我使用以下代码调用线程睡眠(a)时:http://jsfiddle.net/thefiddler99/re3qpuoo/,它同时出现。问题出在这里,我想
for (var i = 0; i < str.length; i++) {
$('#hello').append(str[i])
alert("foo")
sleep(500)
};
该警报显示除每个间隔不存在外,其他一切都正常工作。
我不明白为什么。
注意:睡眠是我定义的一个函数,适用于设定的时间量
JavaScript是单线程的。它正忙于循环运行while循环,无法重新绘制页面。
不要试图编写睡眠函数。这种语言不适合它,只会占用CPU。重写代码以使用setInterval
或setTimeout
。
var i = 0;
next();
function next() {
$('#hello').append(str[i]);
i++;
if (i < str.length) {
setTimeout(next, 500);
}
}
只需尝试setTimeOut
递归调用。
Demo
<script>
var text="This string will be display one by one.";
var delay=500;
var elem = $("#oneByOne");
var addTextByDelay = function(text,elem,delay){
if(!delay){
delay = 500;
}
if(text.length >0){
//append first character
elem.append(text[0]);
setTimeout(
function(){
//Slice text by 1 character and call function again
addTextByDelay(text.slice(1),elem,delay);
},delay
);
}
}
addTextByDelay(text,elem,delay);
</script>
相关文章:
- ReactJS - 元素类型无效错误
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 未捕获错误:不变冲突:元素类型无效:应为字符串
- 未捕获的不变冲突:元素类型无效(react、webpack、循环导入)
- addClass”;输入无效”;输入dos't显示,直到我在输入元素外部单击为止
- React:未捕获的不变量冲突:ReactDOM.render():无效的组件元素
- ReactJS的dropzone元素无效
- 函数调用者无效元素
- 未捕获的语法错误:无法在“元素”上设置“innerHTML”属性:提供的标记是无效的 XML
- 脚本 600:此操作的目标元素无效.(仅限 IE)
- TinyMCE没有阻止无效元素
- 显示:元素的none/block在Firefox中有效,在Safari或Chrome中无效
- 反应.js - “不变冲突:元素类型无效:预期字符串”简单按钮
- jQuery validate-更改无效元素的css
- 将脚本元素插入浏览器操作页无效
- 未捕获的错误:不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数,但得到:对象
- Getting Invariant违规:使用createBrowserHistory时元素类型无效react-route
- 如何根据元素数组中的DOM位置聚焦无效元素
- 验证-更改无效元素的父元素的背景颜色
- 无法对无效元素执行操作:UIAElementNil