如何将参数作为函数传递并在单击按钮后调用它

时间:2019-07-17 03:09:06

标签: javascript function

我使用这样的函数和参数创建自定义删除

function boxAlert(params){
   $('body').append(
     '<div class="box">' +
        '<div>' +params.message+ '</div>' +
        '<button onclick="' +params.action()+ '"> YES </button>' +
     '</div>'
   );
}

然后我像这样使用它

<button onclick="_delete()"> Delete Data </button>

<script>
   function _delete(){
      boxAlert({
         message: 'Lorem ipsum dolor?',
         action: function(){ // call this after button is clicked
            alert();
         }
      });
   }
</script>

这是可行的,但是,单击“确定”按钮之前调用了警报,我想单击“确定”按钮之后调用了警报,如何解决?非常感谢

3 个答案:

答案 0 :(得分:4)

我会这样重写它:

function boxAlert(params) {
  $('body').append(
    $('<div class="box">').append(
      $('<div>').text(params.message),
      $('<button>YES</button>').click(params.action)
    )
  );
}
function _delete() {
  boxAlert({
    message: 'Lorem ipsum dolor?',
    action: function () { // call this after button is clicked
      alert();
    }
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="_delete()"> Delete Data </button>

使用.click函数来指定按钮元素的处理程序。另外,在使用该消息时,请使用.text函数为消息指定文本(可以正确地将其转义。)

答案 1 :(得分:1)

问题是您使用了params.actions()。注意括号,您正在调用该函数。

解决方案:

<button onclick="setTimeout(' +params.action.toString()+ ',0)">

在此解决方案中需要setTimeout才能执行该功能。

希望获得帮助!

答案 2 :(得分:0)

<button onclick="' +params.action()+ '"> YES </button>

将调用该操作并将一个字符串附加到点击处理程序。

function boxAlert(params){
   let div = $('<div class="box">' +
        '<div>' +params.message+ '</div>' +
   '</div>').append($('<button> YES </button>').click(params.action));
   $('body').append(div);
}