背景
普通网页可以实现自动打字,实现方式是通过JavaScript的监听事件addEventListener给指定元素输入文字,微信小程序不支持这样做,有什么办法实现同样的效果?
思路
用this.setData和延迟操作可以实现
实现
页面内容:
<view>
<textarea cols="30" rows="10" value="{{value}}">
</textarea>
<button bindtap="input">自动输入</button>
</view>
逻辑内容:
Page({
data: {
content: '毛泽东的名作《沁园春·雪》,北国风光,千里冰封,万里雪飘。望长城内外,惟余莽莽;大河上下,顿失滔滔。山舞银蛇,原驰蜡象,欲与天公试比高。须晴日,看红装素裹,分外妖娆。江山如此多娇,引无数英雄竞折腰。惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。一代天骄,成吉思汗,只识弯弓射大雕。俱往矣,数风流人物,还看今朝。',
value: '',
},
// 事件处理函数
input() {
let strArr = Array.from(this.data.content)
for (let i = 0; i < strArr.length; i++) {
setTimeout(() => {
this.setData({
value: this.data.value + strArr[i]
})
console.log(strArr[i]);
}, 100 * i)
}
}
})
总结
这样方式简单粗暴吧,有更好的实现方式可以在评论区说明一下,谢谢评论!