从<a> link with JS

时间:2016-06-27 22:23:43

标签: javascript

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>

2 个答案:

答案 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>标记。

Learn more about function.call() in javascript.

PS:昆汀在解释它方面做得很好。