首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在v-show属性更改后元素不被隐藏?

为什么在v-show属性更改后元素不被隐藏?
EN

Stack Overflow用户
提问于 2021-04-12 16:13:58
回答 3查看 80关注 0票数 0
代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
  <head>
    <title>test</title>
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      <p v-show="show">test</p>
      <button v-on:click="change">btn</button>
    </div>

    <script>
      var app = new Vue({
        el: "#app",
        data: {
          show: true
        },
        methods: {
          change: function () {
            this.show = false;
            setTimeout("", 5000);
            this.show = true;
          }
        }
      });
    </script>
  </body>
</html>

为什么元素在按下按钮后不隐藏5秒,然后再次显示?以及如何更改代码以实现此功能?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-12 16:17:33

这直接将show设置为true

代码语言:javascript
运行
复制
console.log(false);
setTimeout(() => console.log("done"), 5000);
console.log(true);

setTimeout接受超时后执行的函数,这是您需要更改变量的地方:

代码语言:javascript
运行
复制
new Vue({
  el: "#app",
  data: { show: true },
  methods: {
    change: function () {
      this.show = false;
      setTimeout(() => this.show = true, 5000);
    }
  }
});
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <p v-show="show">test</p>
  <button v-on:click="change">btn</button>
</div>

票数 1
EN

Stack Overflow用户

发布于 2021-04-12 16:17:01

setTimeout不是那样工作的。

它不会停在那里,5秒后再继续。它立即继续到下一步,因此您立即将show更改为true。

setTimeout异步调用它的回调,这意味着它将在5秒后调用给它的函数。

所以你需要这样做:

setTimeout(() => this.show = true, 5000);

票数 2
EN

Stack Overflow用户

发布于 2021-04-12 16:16:28

尝试在setTimeout内部运行切换键

代码语言:javascript
运行
复制
setTimeout(() => {
  this.show = true;
}, 5000);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67061903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档