最佳答案
设置<input placeholder=""
属性使用 setTimeout
或 setInterval
用于动画循环。
一个更简单的版本只是使用 setTimeout
发送一堆 future 更新的垃圾邮件而不是动画循环,因为我认为它更简单 - 尽管这种方法无法扩展。
var finalPlaceholderText = "foo bar baz";
var input = document.getElementById( 'idOfTextBox' );
var placeholderIndex = 0;
for( var i = 0; i < finalPlaceholderText.length; i++ ) {
setTimeout(
function( length ) {
input.placeholder = finalPlaceholderText.substring( 0, i );
}
, i * 500, i );
}
注意你需要传递 length
( i
) 作为参数进入 setTimeout
回调,因为 JavaScript 的闭包将使用 for
之后的 last 值循环完成而不是 setTimeout
时使用的值每次都被调用。
使用 setTimeout
-循环,它看起来像这样(注意缺少 for
循环):
var finalPlaceholderText = "foo bar baz";
var input = document.getElementById( 'idOfTextBox' );
function incrementPlaceholderText( i ) {
input.placeholder = finalPlaceholderText.substring( 0, i );
if( i < finalPlaceholderText.length ) {
setTimeout( incrementPlaceholderText, 500, i + 1 );
}
}
incrementPlaceholderText( 0 );
或更一般地(以支持多个输入元素和不同占位符文本的方式):
function incrementPlaceholderText( input, finalText, i ) {
input.placeholder = finalText.substring( 0, i );
if( i < finalText.length ) {
setTimeout( incrementPlaceholderText, 500, input, finalText, i + 1 );
}
}
incrementPlaceholderText( document.getElementById( 'idOfTextBox1' ), "foo bar baz", 0 );
incrementPlaceholderText( document.getElementById( 'idOfTextBox2' ), "foo bar baz qux", 0 );
关于javascript - 渐进式输入占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49768201/