【发布时间】:2025-11-27 06:45:02
【问题描述】:
我将我的项目作为我的投资组合中的翻牌展示。最初,项目数据被硬编码在我的 index.html 中,卡片在悬停在大屏幕上和点击小屏幕时翻转。
我决定将所有硬编码数据移动到我的 script.js 中的一个对象中,以便为该对象中的每个项目动态创建一个翻转卡。这里没有问题。 (除此之外,我还为卡片添加了加载背景动画,以便它们仅在几秒钟后显示其内容。这里也没有问题。)
但是,现在我正在使用 JS 为 DOM 创建翻转卡片,附加到卡片的事件侦听器无法像以前那样工作。将卡片记录到控制台确实会显示所有已创建 div 的完整节点列表,但在小屏幕上单击卡片时没有任何反应。
我觉得这是一个范围问题,但我不确定。我试过放置事件监听函数:
- 在
createProjectCard(projects)内,在创建和附加翻转卡片之后:没有响应或抛出错误,但节点列表确实包含所有创建的卡片 - 在
createProjectCard(projects)内,在setTimeout()函数之后:没有响应或抛出错误,但节点列表确实包含所有创建的卡片 - 在
createProjectCard(projects)和setTimeout()函数内部(在它的底部):这里发生了一些奇怪的事情,只有索引为奇数的卡片可以在点击时翻转;另外,如果我console.log('clicked')测试事件侦听器,所有卡片都会记录“点击”,而不仅仅是我点击的那张。 -
createProjectCard(projects)之外:没有响应或抛出错误,但节点列表确实包含所有创建的卡片
我想知道这个问题是否来自将innerFlipCards.forEach 嵌套在projects.forEach 中,但我不知道如何访问innerFlipCards,因为它们是在projects.forEach 中创建的。
带有硬编码项目数据的旧代码,但翻转卡可在移动设备上使用:https://codepen.io/awelie_go/pen/KKXPQBJ
带有动态项目数据的新代码,但翻牌卡在移动设备上不起作用:https://codepen.io/awelie_go/pen/OJxLQvQ
如果有人对如何解决此问题有任何提示,我很想听听。 感谢您的宝贵时间
【问题讨论】:
标签: javascript html dom-events