按钮的OnClick事件在初始化时触发?

时间:2016-04-29 06:30:04

标签: javascript html

我有两个按钮,这两个按钮都会触发单击时运行的功能,但具有不同的参数。它们应该仅在页面上的特定元素存在时单击它们时触发该功能。

JS代码:

if (pageExists != null) {

  document.getElementById('button1').onclick = function(53);
  document.getElementById('button2').onclick = function(23);
}

按钮html(它们是ID以外的相同副本):

    <a href="nextpage.html"><button type="button" id="button1">click here</button></a>

它调用的函数将该参数存储在LocalStorage中,然后它应该使用html代码转到下一页。使用断点显示一旦页面加载,它就会存储53个,然后是23个。大写和ID都是正确的。

在执行此功能之前,我该怎么做才能让它等到两个按钮之一被点击?我不能使用jquery。

1 个答案:

答案 0 :(得分:4)

您正在调用函数而不是设置要调用的函数,因此当运行代码来设置事件处理程序时,它们运行function(53)然后将处理程序设置为该函数调用的返回值,这是无效的。相反,您希望将其设置为函数。试试这个:

if (pageExists != null) {
  document.getElementById('button1').onclick = function.bind(53);
  document.getElementById('button2').onclick = function.bind(23);
}

如果由于兼容性原因而无法使用.bind(这也可以更好地解释):

if (pageExists != null) {
  document.getElementById('button1').onclick = function() {
    function(53);
  };
  document.getElementById('button2').onclick = function() {
    function(23);
  };
}

请注意,我假设您的功能实际上并未被称为function,因为它是保留的关键字。