You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue项目接入jQuery-SlotMachine找不到DOM及Nginx部署问题求助

问题原因

你当前的报错是代码执行时机不对导致的:你把SlotMachine实例化的代码写在了Vue组件导出对象的外部,这部分代码会在js文件加载时立刻执行,此时Vue组件还没完成挂载,对应的#machine DOM元素根本没有渲染到页面上,querySelector自然只能拿到null。

解决方案

把实例化逻辑移到Vue组件的mounted生命周期钩子中即可,这个钩子会在组件DOM完全渲染完成后触发,能保证正确获取到目标元素。另外更推荐用Vue内置的$refs来获取DOM元素,比全局querySelector更稳定,不会受到页面其他同id元素的影响。

修改后代码示例

template部分

<template>
  <div id="app">
    <!-- 给目标元素加ref属性,方便后续获取 -->
    <div ref="machine" id="machine">
      <div>Madrid</div>
      <div>London</div>
      <div>New York</div>
    </div>
    <!-- 后续要加停止按钮直接绑定事件即可 -->
    <!-- <button @click="stopMachine">停止</button> -->
  </div>
</template>

script部分

<script>
import SlotMachine from './components/slotmachine.js'
export default {
  name: 'App',
  data() {
    return {
      machine: null // 把老虎机实例挂到data上,方便后续调用停止等方法
    }
  },
  mounted() {
    // 用$refs获取DOM,保证拿到的是当前组件内渲染完成的元素
    const el = this.$refs.machine
    this.machine = new SlotMachine(el, {active: 1,delay: 450,auto: 1500})
  },
  methods: {
    // 后续停止逻辑直接在这里实现即可
    stopMachine() {
      const stopIndex = this.machine.stop()
      // 拿到停止位置后直接调用你的后端接口上传即可
    }
  }
};
</script>

内容的提问来源于stack exchange,提问作者ch157fl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:36:03