2016-06-27 17 views
0

から取得しています。jsとのリンクの値を取得しようとしていますが、毎回警告が表示されます。は未定義です。<a>のIDまたはVALUEまたはNAMEをJS

私は多くのことをしてみてくださいhave'dが、何も私のために動作しません:(多分あなたの男のいくつかは???

コード私を助けることができる:

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') 
     } 
} 

をこれは、いくつかの<a>リンクです私が持っている:protected_link()

<a value="kerntaak1" onclick="protected_link();" class="btn btn-primary btn-lg flex-item page-scroll"" style="letter-spacing: 5px";>kerntaak 1</a> 
+0

あなたは 'var kerntaak = $(this).attr(" id ");'という行に表示されていると仮定します。 –

+0

おそらく問題は 'this'はあなたが持っていると思っている価値はないが、関数がどのように呼び出されているのかわからないから、私たちはそれを知ることができないだろう。 。 – Quentin

答えて

4

あなたは(.call()または.apply()経由foo.protected_linkまたは付属だろう)なしコンテキストにprotected_link(this.id);を呼んでいます。

したがって、関数thiswindowになるはずです。

驚くべきことに、$(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は関数内の要素になります。

+0

ありがとうございました。私は 'onclick =" protected_link(this.id); "&&を使用しました。 'function protected_link(kerntaak){' –

2

thisは、関数が呼び出されたリンクを参照していない

01。

ただし、この変更、場合:これに

<a value="kerntaak1" onclick="protected_link();" ... 

<a value="kerntaak1" onclick="protected_link.call(this);" ... 

thisは、あなたがそれを参照したい<a>タグを参照します。

Learn more about function.call() in javascript.

PS:クエンティンはそれを説明するの偉大な仕事をしていません。

関連する問題