【问题标题】:Function not firing correctly on first click第一次单击时功能未正确触发
【发布时间】:2015-08-14 13:59:07
【问题描述】:

我有一个制作两个按钮的函数。 一个按钮将自动向下滚动,另一个按钮将自动向上滚动。

它通过一个数组并在每次点击时更改按钮。

我的问题是我必须单击该按钮两次才能使其工作,然后它根本不会被触发。

这里有没有我没看到的逻辑错误?

我希望它的箭头像 twitter 引导图像轮播一样。我想单击箭头并让它们将我带到下一个或上一个部分。

这是我要更改的页面和箭头的屏幕截图 图片已删除

网址已移除

抱歉,我删除了 img 和 url,但由于该网站尚未上线,因此不应以这样的方式查看。不过我是在泡菜。

我解决了这个问题。如果你有类似的,请阅读 cmets。 谢谢大家!

$(function () {
    var leftArrow = $('#left-arrow')
    var rightArrow = $('#right-arrow')




    rightArrow.bind("tap", rightTapHandler)
    function rightTapHandler(event){
        if (ai == 0) {
            alert('0' + event)
            ai = 1
            controllerContainer.innerHTML = linkArrayForwards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayForwards[0] + '<div id="left-arrow" class="arrow"></div></a>';
            return 
        } else if (ai > 0) {
            alert(ai)
            ai++
            controllerContainer.innerHTML = linkArrayForwards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayForwards[ai - 1] + '<div id="left-arrow" class="arrow"></div></a>';
            return                    
        } else if (ai >= linkArrayBackswards.length) {
            ai = linkArrayBackswards.length;
            controllerContainer.innerHTML = linkArrayForwards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayForwards[ai - 1] + '<div id="left-arrow" class="arrow"></div></a>';
            return 
        }  else {
            alert('nothin')
            return false
        }


    };
    leftArrow.bind("tap", leftTapHandler)
    function leftTapHandler(event) {
        if (ai == 0) {
            alert('0' + event)
            ai = 1
            controllerContainer.innerHTML = linkArrayBackswards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayBackswards[0] + '<div id="left-arrow" class="arrow"></div></a>';
            return 
        } else if (ai > 0) {
            alert(ai)
            ai--
            controllerContainer.innerHTML = linkArrayBackswards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayBackswards[ai - 1] + '<div id="left-arrow" class="arrow"></div></a>';
            return 
        } else if (ai >= linkArrayBackswards.length) {
            ai = linkArrayBackswards.length;
            controllerContainer.innerHTML = linkArrayBackswards[ai] + '<div id="right-arrow" class="arrow"></div></a>' + linkArrayBackswards[ai - 1] + '<div id="left-arrow" class="arrow"></div></a>';
            return 
        } else {
            return false
        }

    };
})

【问题讨论】:

  • 这种情况有没有减少的情况?
  • “这种情况的简化情况”是什么意思?我可以尝试绑定,但我使用的是 jQuery mobile,API 显示“jQuery(".selector").on("tap", function(event) { ... })"
  • 就是这样,看到一堵代码对任何人都没有帮助。尝试将您的代码简化为导致问题的原因并将其放入您的问题中。
  • 你能在 jsfiddle 上发布你的实际代码吗?
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: javascript jquery html arrays logic


【解决方案1】:

根据我在您网站上的通知,它会在第一次点击两个箭头中的任何一个时提醒“0[option Option]”。

    if (ai == 0) {
        alert('0' + event)
        ai = 1

"ai == 0" 必须为真。据我所知,这是唯一一个带有“0”的警报,也是它弹出该警报的唯一原因。

除此之外,一旦您在警报上单击“确定”,箭头对我来说似乎工作得非常好..

编辑
你确定你在“if (ai == 0)”检查之前声明了ai吗? 如果你不是。删除警报,使代码看起来像这样(两个箭头):

    if (ai == 0) {
        ai = 1

【讨论】:

  • 是的,我稍微修改了一下。但在那之后它什么也没做。之后它会带你到第 3 节,依此类推。
  • 虽然我得到了它......我最终附加了 onclick="function()" 我想使用花哨的 jQuery 并变得“酷”,但这也有效
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多