单击警报按钮后的内部内容

Alert button's inner content after clicking it

本文关键字:内部 按钮 单击      更新时间:2023-09-26

请帮助修复错误:代码当前未定义警报而不是按钮的内部内容

 function registerClickHandler() {
   $('#clickme').click(function() {
     setTimeout(function() {
       alert(this.innerHTML);
     }, 200);
   });
 }
超时

处理程序中的this不是按钮

function registerClickHandler() {
    $('#clickme').click(function (e) {
        setTimeout(function () {
            alert(e.currentTarget.innerHTML);
        }, 200);
    });
}

尝试在设置超时之前获取值

  function registerClickHandler() {
        $('#clickme').click(function () {
            var value=this.innerHTML;
            setTimeout(function () {
                alert(value);
            }, 200);
        });
    }

在 java 脚本中,this指向最后一个函数,超时处理程序内部不是按钮,这就是您收到错误的原因。

此外,使用on.('click', function(){...})实现此类功能或点击也是一种很好的做法

下面你可以看到我的例子:

$(document).ready(function(){
    $('#clickme').on('click', function (e) {
        setTimeout(function() {
            alert(e.currentTarget.innerHTML);
        }, 200);
    });
});

你可以在这里看看并运行它:http://jsfiddle.net/gon250/6qwk0g1t/1/

尝试将 click 事件处理程序放在函数外部。在调用 setTimout 之前,还要将 'this' 的值传递给变量。稍后在 setTimout 中使用此变量。在此处阅读有关Javascrpt原型的更多信息

$(document).ready(function(){
  $('#clickme').click(function() {
    var me = this;
         setTimeout(function() {
           alert(me.innerHTML);
         }, 200);
       });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clickme">click me</div>