【问题标题】:Vue.js--change div element's size, el.style.attr not workingVue.js--更改 div 元素的大小,el.style.attr 不起作用
【发布时间】:2019-12-26 11:49:24
【问题描述】:

我试图在 Vue 中制作图像,但在更改 div 元素大小时遇到​​了麻烦。

圈子组:

Vue 警告:

挂载钩子错误:“TypeError: 无法读取未定义的属性‘样式’

还尝试了el.setAttribute("style", "top: px; bottom: px;...")setAttribute() 方法出现错误。

<template>
  <div class="wavyCircles">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
</template>

computed: {
    circleSizing() {
      let circles = document.getElementsByClassName("circle")
      for (let i = 0; i <= circles.length; i++) {
        circles[i].style.top = 10 * (i + 1)
        circles[i].style.bottom = 10 * (i + 1)
        circles[i].style.left = 10 * (i + 1)
        circles[i].style.left = 10 * (i + 1)
      }
    }
  },

  mounted: function() {
    this.circleSizing();
  }

【问题讨论】:

  • @Phil 介意我的问题负责人一分钟吗?^^

标签: javascript vue.js


【解决方案1】:

您应该使用不是计算属性的方法,并且您正在循环一个额外的循环,结果您得到 circles[i] 未定义

Vue.config.devtools = false
Vue.config.productionTip = false

new Vue({
  el: "#app",
  methods: {
    circleSizing() {
      let circles = document.getElementsByClassName("circle")
      for (let i = 0; i <= circles.length - 1 ; i++) {
        circles[i].style.top = 10 * (i + 1) + "px"
        circles[i].style.bottom = 10 * (i + 1) + "px"
        circles[i].style.left = 10 * (i + 1) + "px"
        circles[i].style.left = 10 * (i + 1) + "px"
      }
    }
  },
  mounted() {
      this.circleSizing()
  }
})
.wavyCircles {
  position: relative;
}

.circle {
  position: absolute
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div class="wavyCircles">
    <div class="circle">u</div>
    <div class="circle">s</div>
    <div class="circle">e</div>
    <div class="circle">m</div>
    <div class="circle">e</div>
    <div class="circle">t</div>
    <div class="circle">h</div>
    <div class="circle">o</div>
    <div class="circle">d</div>
    <div class="circle">i</div>
    <div class="circle">n</div>
    <div class="circle">s</div>
    <div class="circle">t</div>
    <div class="circle">e</div>
    <div class="circle">a</div>
    <div class="circle">d</div>
  </div>
</div>

【讨论】:

  • 非常感谢您提供解决方案并指出问题,以及“改用方法”哈哈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2019-07-21
  • 1970-01-01
  • 2016-05-24
  • 2016-12-04
  • 1970-01-01
相关资源
最近更新 更多