【发布时间】:2015-07-08 16:05:29
【问题描述】:
我有一个按钮,点击时有 2 个功能。这是我的按钮:
<button id="btnNext" onclick="increment(); Next();">Next</button>
increment() 函数在第一次单击时按预期工作,但 Next() 函数却没有。第一次单击后它确实按预期工作。如果我删除 increment() 函数,Next() 函数将在第一次单击时起作用。我尝试过组合这些功能,但它给了我相同的结果。
Next() 函数移动到下一个窗体,increment() 函数将滚动条滑块移动到所需位置。
这是我的功能:
var Next = function () {
UserVM.Model.MoveCurrentToNext();
}
var increment = function () {
if (lastScroll < 240) {
lastScroll += 40;
}
scrollpos.scrollTop = lastScroll;
}
有人知道这是什么原因吗?
更新:我在 Next() 函数中添加了一个警报。现在,当我触发按钮时,它会在弹出警报框时显示下一个表单,但是当我单击确定时,它会返回到上一个表单。这只发生在我第一次单击按钮时。这有什么原因吗?有办法解决吗?
【问题讨论】:
-
创建一个事件处理程序并从那里调用这两个函数不是更容易吗?
-
你试过
onclick="Next()"然后尝试从Next函数调用increment吗? -
increment()没有进行防御性编码。如果 lastScroll 或 scrollpos 未定义,它将失败。 -
我感觉这是代码的时间问题。
-
旁注:将内联处理程序与 jQuery 一起使用通常不利于维护。它将 事件注册 与 事件处理程序 分开(也失去了 jQuery 添加的功能)。如果您使用 jQuery 注册事件,您的代码通常会更简单且更易于维护。这个错误很可能会消失。
标签: javascript jquery html