我是Javascript的新手。我想写一个javascript代码,当我点击一个按钮时,弹出警报窗口并写入data-message属性。这是我的代码:
<button type="button" data-message="a1" onclick="pop()">click</button>
<script>
function pop() {
alert(this.getAttribute("data-message"));
}
</script>
但我收到了错误
TypeError: this.getAttribute is not a function
alert(this.getAttribute("data-message"));
我有两个问题:
出了什么问题?
我该如何调试?我怎样才能找出this
所指的内容?我正在使用萤火虫。
非常感谢。
答案 0 :(得分:7)
您需要在
按钮上发送this
<button type="button" data-message="a1" onclick="pop(this)">click</button>
和Js,捕捉谁在呼唤它。
function pop(e) {
alert(e.getAttribute("data-message"));
}
答案 1 :(得分:5)
在您的函数中,this
是window
对象,并且没有getAttribute
方法。您需要将this
作为onclick
属性的参数传递:
<button type="button" data-message="a1" onclick="pop(this)">click</button>
<script>
function pop(button) {
alert(button.getAttribute("data-message"));
}
</script>
答案 2 :(得分:3)
正如其他人所提到的,你需要在你的onclick函数中传递this
。
<button type="button" data-message="a1" onclick="pop(this)">click</button>
function pop(element) {
alert(element.getAttribute("data-message"));
}
为了更好地理解为什么会出现这种情况,this is a good read。该页面详细描述了您的完全方案。
答案 3 :(得分:0)
或者jquery
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script>
$(document).ready(function()
{
$(".message").on("click", function()
{
console.log($('.message').data('message'));
});
});
</script>
<button type="button" class="message" data-message="a1">click</button>
答案 4 :(得分:0)
您也可以内联
<button type="button" data-message="a1" onclick="function pop(this); pop(button);pop(alert(button.getAttribute("data-message"));)">click</button>
答案 5 :(得分:0)
DOM 实际上提供了一组 API 来访问HTML元素,并且此指针指向对象的范围,该对象只能访问 类,ID,样式 等属性。
在对象范围内,即,您可以通过对象属性( this.data-message )访问。但是,对象范围内没有 getAttribute() 方法,因此您不能使用 this.getAttribute()。