匿名
未登录
中文(中国大陆)
登录
Limbo Wiki Mirror
搜索
查看“︁模板:Encounter.js”︁的源代码
来自Limbo Wiki Mirror
命名空间
模板
讨论
更多
更多
页面操作
阅读
查看源代码
历史
←
模板:Encounter.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
/** * 万隙之墟 - 奇遇节点交互脚本 * 功能:点击选项后隐藏同级其他选项,显示结果;支持重置全部状态。 */ (function() { // 等待DOM加载完成 function init() { // 为所有奇遇节点绑定事件委托 document.querySelectorAll('.encounter-node').forEach(function(node) { bindNodeEvents(node); }); } function bindNodeEvents(node) { // 重置按钮 var resetBtn = node.querySelector('.reset-button'); if (resetBtn) { resetBtn.addEventListener('click', function(e) { e.stopPropagation(); resetNode(node); }); } // 事件委托:处理所有 .option-trigger 的点击 node.addEventListener('click', function(e) { var trigger = e.target.closest('.option-trigger'); if (!trigger) return; e.preventDefault(); e.stopPropagation(); var optionItem = trigger.closest('.option-item'); if (!optionItem) return; // 如果该选项已经显示结果,不再重复处理(可选,可根据需求允许重新选择?这里设计为只能选一次) if (optionItem.classList.contains('chosen')) return; // 隐藏该 optionItem 所在的层级中的所有其他 .option-item(同级) var parentContainer = optionItem.parentNode; var siblings = parentContainer.querySelectorAll(':scope > .option-item'); siblings.forEach(function(sib) { if (sib !== optionItem) { sib.style.display = 'none'; } }); // 标记当前选项为已选 optionItem.classList.add('chosen'); // 显示该选项对应的 result var resultDiv = optionItem.querySelector('.option-result'); if (resultDiv) { resultDiv.style.display = 'block'; } // 可选:如果结果中还有子选项,子选项的触发需要再次绑定(但事件委托已覆盖,无需额外操作) }); });
返回
模板:Encounter.js
。
导航
导航
首页
最近更改
随机页面
操作申请
帮助
入门指南
编辑指南
写作指南
随机
官方
碎数研
谜题保管所
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志