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

Alert button's inner content after clicking it

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

 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);
    });
}

尝试获取setTimeout前的值

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

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

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

在 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/