Я хочу написать программу на Vue Js. Программа предназначена для двух изображений, которые непрерывно чередуются каждые 3 секунды.

Пожалуйста, помогите мне.

Вот код

<script>
    const app = Vue.createApp({
        data() {
            return{
                src : "farkas.jpg"
            }
        },
        methods: {
            callFunction: function() {
                var v = this;
                setInterval(function() {
                    v.src = "mokus.jpg"
                }, 3000);
            }
        },
        mounted () {
            this.callFunction()
        }
    })
    const vm = app.mount('#app')
</script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Image changer</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <img :src="src">
    </div>
</body>
</html>
1
secike1230 27 Ноя 2021 в 15:51

3 ответа

Лучший ответ

Вы можете определить список источников в data:

data() {
  return {
    src : "farkas.jpg",
    srcs: ["farkas.jpg", "mokus.jpg"]
  }
}

И в функции определите i изначально 0 и каждый раз увеличивайте / сбрасывайте его:

callFunction: function() {
  let i = 0;
  setInterval(() => {
    this.src = this.srcs[i];
    if(++i === this.srcs.length) i = 0;
  }, 3000);
}
0
Majed Badawi 27 Ноя 2021 в 16:01
this.interval = setInterval(function() {
    if (v.src === "mokus.jpg") v.src = "farkas.jpg"
    else v.src = "mokus.jpg" }, 3000);

И уничтожьте интервал с помощью этого кода в хуке beforeDestroy.

clearInterval(this.interval)
0
Max 27 Ноя 2021 в 16:02

Ты можешь попробовать:

const app = Vue.createApp({
        data() {
            return{
                currentSrc : 0,
                srcs: ["img1.jpg", "img2.jpg"]
            }
        },
        methods: {
            callFunction: function() {
                setInterval(() => {
                    this.currentSrc = this.currentSrc === this.srcs.length - 1 ? 0 : this.currentSrc + 1;
                }, 1000);
            }
        },
        computed: {
            src: function(){
                return this.srcs[this.currentSrc]
            }
        },
        mounted () {
            this.callFunction()
        }
    })
    const vm = app.mount('#app')
0
im dev 27 Ноя 2021 в 16:21