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

时间:2015-03-13 09:08:07

标签: javascript jquery click alert innerhtml

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

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

4 个答案:

答案 0 :(得分:3)

超时处理程序内的

this不是按钮

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

答案 1 :(得分:1)

尝试在setTimeout

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

答案 2 :(得分:1)

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

使用on.('click', function(){...})

实现此类功能或onclicks也是一种很好的做法 你可以在下面看到我的例子:

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

您可以在此处查看并运行它:http://jsfiddle.net/gon250/6qwk0g1t/1/

答案 3 :(得分:0)

尝试将click事件处理程序放在函数外部。在调用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>