javascript - 第一次单击时函数无法正确触发

标签 javascript jquery html arrays logic

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

它会遍历一个数组并在每次点击时更改按钮。

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

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

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

这是我尝试更改的页面和箭头的屏幕截图 IMG 已删除

网址已删除

抱歉,我删除了 img 和 url,但由于该网站尚未上线,因此不应该这样查看。但我却陷入了困境。

我解决了这个问题。如果您有类似的情况,请阅读评论。 谢谢大家!

$(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
        }

    };
})

最佳答案

根据我在您网站上注意到的情况,第一次单击两个箭头中的任何一个时,它都会发出“0[option Option]”警报。

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

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

除此之外,一旦您单击警报上的“确定”,箭头似乎对我来说就完美地工作了..

编辑
您确定在“if (ai == 0)”检查之前声明了 ai 吗? 如果你不是。删除警报,使代码如下所示(对于两个箭头):

    if (ai == 0) {
        ai = 1

关于javascript - 第一次单击时函数无法正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32011921/

相关文章:

javascript - VueJS 在模板渲染前获取数据

javascript - 如果验证未通过如何不提交表单

javascript - 是否可以将 ScrollTo 添加到我的 Accordion 常见问题解答页面?

css - HTML/CSS 之谜?不知道在哪里调出尺寸

javascript - 引用错误: OpenLayers is not defined in openstreetmap

JavaScript 分离字符串然后解密字符数

jquery - 跟踪选定的单选按钮并即时应用样式

javascript - jQuery 切换功能 - 它是如何工作的?

javascript - 根据下拉列表中的选定值显示表单字段 Angular TypeScript

html - HTML 和 ASP.NET MVC 3 Razor 中隐藏输入和非常大的值的问题