请帮助修复错误:代码当前警告未定义而不是按钮的内部内容
function registerClickHandler() {
$('#clickme').click(function() {
setTimeout(function() {
alert(this.innerHTML);
}, 200);
});
}
答案 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(){...})
$(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>