我如何用一个数组触发触摸事件

How do I trigger touchevents with an array?

本文关键字:触摸 事件 数组 何用一      更新时间:2023-09-26

在我的应用程序中,用户可以开始录制,他们触摸的每个按钮将被保存到一个数组

例如:

"[{"time":1835,"elemId":"bass"},{"time":2553,"elemId":"highhat"}]"

然后我有一个函数它带来数组并且应该播放每次触摸但是,我现在的代码只带来了一个错误

document.getElementById('playback').onclick = function () {
console.log(localStorage.getItem("eventlist"));
var playback = JSON.parse(window.localStorage.getItem("eventlist"))

for (i = 0; i < playback.length; i++) {
    play = playback[i];
    setTimeout((function (play) {
        return function () {
            document.getElementById(play.elemId).touchstart();
        }
    })(play), play.time)
}
}
error: Uncaught TypeError: Object #<HTMLDivElement> has no method 'touchstart'.

我将感谢任何帮助,因为我正确地卡住了,提前感谢!

HTML:<div class="drum" id="bass" ontouchstart="play('bass');" ontouchend="touchEnd(event);">Bass</div>

我建议嵌入对描述演奏乐器的函数或字符串参数的引用,而不是元素的id。这是一个更快更优雅的解决方案。

"[{"time":1835,"elemId":"bass"},{"time":2553,"elemId":"highhat"}]"

for (i = 0; i < playback.length; i++) {
    instrument = playback[i];
    setTimeout(function (instrument) {
        play(instrument.elemId)
     }, instrument.time)
}