i'm trying to get the value of some link with js, but everytime i get the alert: undefined.
I have'd try a lot of things but nothing will work for me :( maybe some of your guys can help me???
code:
function protected_link() {
var pass1 = prompt("Wachtwoord!!!");
var pass2 = "admin";
var kerntaak = $(this).attr("id");
if (pass1 === pass2) {
load('img/pdf/'+kerntaak+'.pdf')
} else {
load('index.php')
}
}
This is some <a>
link that i have :
<a value="kerntaak1" onclick="protected_link();" class="btn btn-primary btn-lg flex-item page-scroll"" style="letter-spacing: 5px";>kerntaak 1</a>
答案 0 :(得分:4)
您正在呼叫protected_link(this.id);
没有上下文(foo.protected_link
或通过.call()
或.apply()
提供)。
因此,函数this
内部将是window
。
不出所料$(window).attr("id")
并不能为您提供所需的价值。
您将id作为参数传递:
protected_link(this.id);
^^^^^^^
...所以请使用它。
function protected_link(kerntaak) {
alert(kerntaak);
校正。您已编辑了该问题。您 将其作为参数传递。然后你删除了它。取消删除它。把它放回去。
如果您正在编写现代JavaScript,那么您将无法使用内部事件属性,您可以这样做:
$("some selector that matches the elements you care about")
.on("click", protected_link);
(我使用jQuery来进行事件绑定,因为你已经在使用它了)
这将在元素的上下文中调用,this
将是函数内的元素。
答案 1 :(得分:2)
在protected_link()
中,this
未引用调用该函数的链接。
但是,如果你改变了这个:
<a value="kerntaak1" onclick="protected_link();" ...
对此:
<a value="kerntaak1" onclick="protected_link.call(this);" ...
this
会引用您希望其引用的<a>
标记。