Sketchfab API与JavaScript单按钮切换函数:仅生效一次求助
解决Sketchfab API按钮交替执行hide/show的问题
嘿,我来帮你搞定这个按钮只能生效一次的问题!你的代码之所以只工作一次,是因为每次点击后直接替换了按钮的onclick事件处理函数,导致第二次点击后就没有了切换回原操作的逻辑。咱们换个更简洁可靠的思路:用一个状态变量跟踪当前状态,在同一个点击函数里判断该执行隐藏还是显示。
原代码的问题分析
你原来的代码逻辑是:第一次点击时执行hide,然后把按钮的onclick替换成执行show的函数;但第二次点击执行show后,没有把onclick再替换回hide的函数,所以第三次及以后点击按钮就没反应了——相当于只完成了一次切换,没有形成循环。
修正后的代码
首先初始化一个状态变量来记录当前的显示状态,然后在同一个点击处理函数里根据状态执行对应操作:
// 初始化状态:假设初始时nodeTop是显示的,所以第一次点击要隐藏 let exterior = true; // 给按钮绑定固定的点击处理函数 hidebutton.onclick = function() { if (exterior) { // 当前是显示状态,执行隐藏 api.hide(nodeTop); console.log('已隐藏nodeTop'); } else { // 当前是隐藏状态,执行显示 api.show(nodeTop); console.log('已显示nodeTop'); } // 切换状态,为下一次点击做准备 exterior = !exterior; console.log('当前状态:', exterior); };
逻辑说明
- 用
exterior变量跟踪nodeTop的显示状态:true代表显示,false代表隐藏(你可以根据实际初始状态调整这个值)。 - 每次点击按钮时,先判断当前状态,执行对应的
hide或show操作。 - 操作完成后,反转
exterior的状态,这样下一次点击就会执行相反的操作,实现交替切换的效果。
这种方式不需要反复替换按钮的点击事件处理函数,逻辑清晰,也不会出现只生效一次的问题。
内容的提问来源于stack exchange,提问作者Joel Herrero
相关产品推荐
相关产品推荐

