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

如何在v-for循环中引用迭代项?解决鼠标悬停n未定义报错

Vue中v-for循环内鼠标悬停显示对应n值的正确实现方式

你遇到的问题是因为原生onmouseover属性里的代码运行在浏览器全局作用域,无法访问Vue模板v-for循环中的局部变量n。以下是两种正确的实现方式:

方式一:直接使用Vue事件绑定传参

利用Vue的@mouseover(v-on:mouseover的语法糖)绑定事件,直接将循环变量n传入事件处理:

<template>
  <div>
    <img v-for="n in [0,1,2]" :key="n" 
         src="something.png" @mouseover="alert(n)">
  </div>
</template>

方式二:内联箭头函数传递变量

如果需要在事件中执行更复杂的逻辑,也可以用箭头函数包裹,确保n的作用域正确:

<template>
  <div>
    <img v-for="n in [0,1,2]" :key="n" 
         src="something.png" @mouseover="() => alert(n)">
  </div>
</template>

核心原因说明

原生DOM事件属性(如onmouseover)的回调代码是在全局环境执行的,而Vue模板里的n是v-for循环生成的局部变量,仅存在于Vue的模板作用域内。改用Vue的事件绑定语法后,Vue会自动维护变量的作用域,让回调函数能正确访问到当前循环的n值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:43:17